如@Holger的评论所述,您可以执行git merge --abort
以中止合并。 但是,您可能不想这样做。 合并发生是因为远程(origin
)有您本地没有的更改。 您的历史记录可能如下所示:
*--*--A--B--C [master, harmeet/master]
\
D--E [origin/master]
(请注意,master
== harmeet/master
。我一会儿会讲到这个。)
有三种解决方案:合并(Merge)、变基(Rebase)或强制更新(Force Update)。
最简单的解决方法是完成合并。要做到这一点,请在编辑器中解决任何冲突,使用git add .
进行暂存,然后使用git commit
进行提交。然后您的历史记录将如下所示:
*--*--A--B---C [harmeet/master]
\ \
\ F [master]
\ /
D--E [origin/master]
然后你可以使用git push origin master
来更新origin
,使用git push harmeet master
来更新harmeet
。
如果你想保持线性历史记录,请中止合并,然后执行:
git pull --rebase
如果有任何冲突,请解决它们并继续执行git rebase --continue
。
你的历史记录将会如下:
*--*--A--B--C [harmeet/master]
\
D--E [origin/master]
\
B'--C' [master]
您可以使用以下方式更新origin
:
git push origin master
使用以下命令强制更新harmeet
:
git push --force-with-lease harmeet master
你的最终历史记录将会是:
*--*--A--D--E--B'--C' [master, origin/master, harmeet/master]
如果真的不想要来自origin
的更改,可以执行以下操作:
git push --force-with-lease origin master
你的历史记录将会像这样:
*--*--A--B--C [master, harmeet/master, origin/master]
harmeet/master
是最新的,则它与你本地的 master
在同一个提交上,除非自你上次抓取以来,有人已经推送到了 harmeet/master
。origin
(提交 D
和 E
)到 harmeet
的更改,则需要像上面描述的那样进行变基或合并,然后推送。我在我的同事的电脑上发现了一个问题:master | MERGING
状态的出现是因为开发人员在合并提交时没有输入描述信息。
此时,您只需要发送一个提交并按以下方式描述:
git commit -m 'merge commit'
其他答案主要集中在回滚上,但是如果你需要前进,你可以使用这个解决方案。
git merge --abort
(https://git-scm.com/docs/git-merge#_description) - Holger Justgit status
。(显然,这不是你的情况) - Christoph