撤消 git 自动合并

Posted

技术标签:

【中文标题】撤消 git 自动合并【英文标题】:Undo git Auto-merge 【发布时间】:2019-08-29 21:09:07 【问题描述】:

切换分支后,我应用了 stash(如下所示),这导致了自动合并。

  git stash apply

Auto-merging src/clojure/project_src.clj
On branch upgrade_project
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

modified:   src/clojure/project_src.clj

no changes added to commit (use "git add" and/or "git commit -a")

我尝试了git revert HEAD,它恢复了提交(不是自动合并)。如何恢复自动合并?

【问题讨论】:

【参考方案1】:

要中止合并,您可以这样做

git merge --abort

但是现在您恢复了上一次提交,除非您已经将该失败状态推送到远程,否则我建议您重置到您在第一次错误存储之前的位置:

git reset --hard HEAD^

此时您可以重试stash apply 并以不同方式合并它,或者只是不应用存储,但无论如何您都会回到原点。

【讨论】:

感谢您的回答! @RomainValeri【参考方案2】:

我做了以下,效果很好。

首先,我对恢复我上次提交的提交进行了 git revert。这让我回到了 git stash apply 导致的自动合并。

然后,我申请了git reset --merge upgrade_project,它恢复了自动合并。

编辑:我还了解到 git merge --abortgit reset --merge 对于正在进行的合并工作相似。

【讨论】:

以上是关于撤消 git 自动合并的主要内容,如果未能解决你的问题,请参考以下文章

撤消 Git 分支提交和合并

GIT-撤消合并

Git撤消先前的合并,这会阻止差异

如何撤消 git flow 功能完成?

撤消已发布的合并并重新应用原始更改而不重写历史记录

撤消 git pull,如何将 repos 恢复到旧状态