Git“你还没有完成你的合并”而没有提交?

每当我尝试推入Git,我得到这个:

You have not concluded your merge (MERGE_HEAD exists). Please, commit your changes before you can merge. 

运行git status我得到:

 # On branch master nothing to commit (working directory clean) 

或者运行git ls-files -u我什么也没得到。

运行git add . 再试一次没有什么区别。

这是怎么回事?

好吧,我终于find答案: git commit -m "Test"显然解决了这个问题。 结果是一个空的提交,没有任何变化。 即使Github显示一个空的提交,但它的工作。

你最终有一个空的合并提交(双亲)还是只是一个空的提交? 在后一种情况下,您可能已经删除.git/MERGE_HEAD

更新:而不是手工删除MERGE_HEAD ,你也可以使用git merge --abort ( 从git 1.7.4开始 )或者git reset --merge ( 从git 1.6.2开始 )。

还值得一提的是,至less从git 1.8.3开始(也许更早?),如果正在进行实际的合并,并且需要提交(如果您指定了--no-commit ,则应该看到类似这样的status消息):

 # On branch master # All conflicts fixed but you are still merging. # (use "git commit" to conclude merge) # nothing to commit, working directory clean 

如果你没有看到这一点,仍然得到MERGE_HEAD警告,有些东西是搞砸的,你可能只是 – 回到干净的状态。

来自评论的其他细节

在合并过程中,git在.git文件夹的根目录(在HEAD,ORIG_HEAD,可能是FETCH_HEAD等)的根目录下创build一个MERGE_HEAD文件,以跟踪正在进行的合并的信息(具体来说,提交的SHA(s) )被合并到当前的HEAD中)。 如果删除它,Git将不再认为合并正在进行中。 很明显,如果合并真的在进行,那么你不会想删除这个文件。

我的人生救星是git reset命令。