【问题标题】:reverting push'd git commit恢复推送的 git commit
【发布时间】:2011-07-16 01:04:02
【问题描述】:

我有一个包含两个分支的仓库——master 和 dev。我在 master 分支上工作并拉取,并收到一条消息说 repo 是最新的。我提交了我的更改,并推送到远程仓库(在 github 上)。我收到一条消息,说某些更改被拒绝。

然后我做了一个git pull origin dev,这显然是错误的做法——因为它把 dev 分支与我的 master 合并了,而且我像个白痴一样直到我再次推送时才注意到这一点。所以最后一次提交显示Merge branch 'dev' of github.com:myuser/myrepo

我可以通过执行git reset --hard [sha] 回到本地存储库中最后一个已知的良好状态,其中 [sha] 是合并前的提交(尽管我不确定如何对原点进行更改)-- 或者从我读过的内容来看,我也可以做一个git revert -m,然后提交/推送该更改。

任何人都可以引导我通过“正确的方式”撤消我的合并,并将两个分支恢复到合并之前的位置吗?

谢谢——如果重要的话,这是一个只有两个开发人员的共享存储库,所以它没有进行重大更改。

编辑添加:请像我小时候一样跟我说话。我不得不承认这个 Git 东西仍然让我感到困惑,所以我离超级用户还很远!谢谢

【问题讨论】:

    标签: git merge github reset revert


    【解决方案1】:

    FelipeFG 的答案在两个开发人员的环境中运行良好,您可以轻松地协调重做其他人的本地存储库,但实际上您最好使用git revert -m<parent id of mainline branch, 1 in this case> <commit ref>。然后,当您完成修复它时,只需 git revert <revert commit>git merge dev(在这种情况下恢复您的恢复很重要,因为否则 git merge dev 不会将您的旧合并视为祖先,这将导致冲突必须解决)。

    历史记录会很丑陋,但它也支持快进,并且由于您的历史记录修订,您不必担心一些糟糕的 sap 会解决混乱的本地冲突。

    详情请见http://opensource.apple.com/source/Git/Git-26/src/git-htmldocs/howto/revert-a-faulty-merge.txt

    【讨论】:

      【解决方案2】:

      git reset --hard [sha] 将更正本地存储库上的分支。要强制此推送起作用,您可以发送git push origin +master:master。 + 号将强制非线性推送起作用。

      如果其他开发人员已经把你拉错了提交,他们将不得不做一个git remote update,然后是一个git reset --hard origin/master(前提是他们在他们的主分支上,并且没有做任何其他的提交。

      请谨慎使用这些命令:-)。祝你好运。

      【讨论】:

      • 有风险,但如果只有两个开发人员,我认为没关系。在这样做之前至少备份一份你的回购副本可能是有意义的,以防万一你搞砸了。
      • 感谢 felipefg——看起来效果很好!我很欣赏明确的答案。
      • @Noufal:您实际上不必备份整个 repo - 只需在 master 的旧位置创建一个分支。
      • 您好,我也遇到了同样的问题。我想取消推送到原点的合并。我已经做了git reset --hard [sha],但现在我无法使用-f+recette:recette 推送到原点、事件。 Git 告诉我:remote: error: denying non-fast-forward refs/heads/recette (you should pull first) To ssh://my-git-repo ! [remote rejected] recette -> recette (non-fast-forward) error: failed to push some refs to 'ssh://my-git-repo'
      猜你喜欢
      • 1970-01-01
      • 2019-08-10
      • 1970-01-01
      • 2023-03-06
      • 1970-01-01
      • 2015-09-04
      • 2015-10-02
      • 2013-02-22
      • 1970-01-01
      相关资源
      最近更新 更多