当前位置: 首页 > 知识库问答 >
问题:

前端 - git回退之后push失败?

傅嘉悦
2024-03-21

背景:

git项目中需要回退更改,执行
git reset --soft xx

回退成功之后,git push之后有报错
image.png

尝试强制push,执行
git push --force

仍然有报错

代码只能往前提交、push,不能回退、push

共有2个答案

端木澄邈
2024-03-21

你原先的版本是 v0,提交几次之后到了 v1,然后发现有问题,reset 回到 v0,修好之后在提交,此时的版本是什么?

不是 v1,而是 v1'。(或者你理解成 v2 也行)

v1' 和 v1 是两个不同的路线,当然不能直接 push。此时你可以选择 push -f,但是不推荐,可能会搞丢中间的提交。

也是因为存在很大风险,所以一些仓库会保护分支,禁止 -f。你后面的错误可能是因为这个导致的。

赵奕
2024-03-21

问题描述

在Git项目中,使用了git reset --soft xx回退更改后,尝试使用git push推送更改时遇到了错误。即使尝试使用git push --force强制推送,仍然遇到问题。

可能的原因

  1. 本地与远程的提交历史不一致:当你使用git reset回退提交时,你的本地提交历史与远程的提交历史不再一致。当你尝试推送时,Git会检查这种不一致性并拒绝推送,以防止覆盖远程的提交。
  2. 强制推送的风险:使用git push --force会强制覆盖远程的提交历史。这可能会导致其他开发者的工作变得复杂或混乱,因为他们可能需要重新同步他们的本地仓库。

解决方案

  1. 检查远程仓库的状态:首先,你可以使用git fetch来更新你的本地仓库,查看远程仓库的最新状态。
  2. 使用git push --force-with-lease:这是一个更安全的强制推送方式。它会检查远程仓库的最新状态,并确保你的推送不会覆盖其他人的工作。
git push --force-with-lease origin your-branch-name
  1. 与团队沟通:如果你决定强制推送,确保通知你的团队成员,以便他们可以更新他们的本地仓库。
  2. 考虑其他方法:如果可能,考虑是否可以通过其他方式(如创建新的合并请求或分支)来避免强制推送。

注意:在使用git resetgit push --force时要特别小心,确保你了解这些命令的后果,并与团队成员进行充分的沟通。

 类似资料:
  • Name git-push - 更新远程引用以及关联的对象 概要 git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>] [--repo=<repository>] [-f | --force] [-d

  • git push 可以把在本地对项目做的提交上传到远程仓库。 《硅谷》第四季第一集开场 5 分钟左右。Gilfoyle 问 Richard:“Did you push you code?”。这里说的应该就是使用 git push 命令,把代码上传到远程仓库。 用法 git push 远程 分支 练习 1,我们已经为项目添加了一个远程仓库,现在可以把项目 push 到远程仓库了,执行: git p

  • 我印象中 只要本地分支和远程分支建立了跟踪关系就可以直接使用git push了不用再指定远程分支名了 我今天遇到了问题 说我本地分支名和远程分支名不同名 让我必须指定写出远程分支名,我不理解难道不是建立跟踪关系就可以了吗 不同名不行吗?git push省略远程分支名时 具体原理是什么 本地分支叫 xdd git branch -vv 输出的就是sandbox/devops/web_dev

  • Git版本回退的意思就是将本地代码回退到某一个指定的版本,此版本之前的所有内容都会被重置. 操作方法: VCS —> Git —> Reset HEAD—> 弹出Reset Head对话框. Reset HEAD: Reset Type: 回退类型 Mixed:回退到某个版本,本地源码不会回退, 会回退commit和index信息. Soft:回退到某个版本, 本地源码和index信息不会回退,

  • 名称 git-http-push - 通过 HTTP / DAV 将对象推送到另一个存储库 概要 git http-push [--all] [--dry-run] [--force] [--verbose] <url> <ref> [<ref>…] 描述 将缺失的对象发送到远程存储库,并更新远程分支。 注意:如果您的 libcurl 早于7.16,则此命令将暂时禁用,因为组合报告不起作用,有时会

  • 主要内容:描述,示例命令用于将本地分支的更新,推送到远程主机。它的格式与命令相似。 使用语法 描述 使用本地引用更新远程引用,同时发送完成给定引用所需的对象。可以在每次推入存储库时,通过在那里设置挂钩触发一些事件。 当命令行不指定使用参数推送的位置时,将查询当前分支的配置以确定要在哪里推送。 如果配置丢失,则默认为。 示例 以下是一些示例 - 上面命令表示,将本地的分支推送到主机的分支。如果不存在,则会被新建。 如果