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
命令。