Git“你还没有完成你的合并”,没有任何承诺?

时间:2012-02-04 18:59:25

标签: 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 .并再次尝试没有任何区别。

怎么了?

3 个答案:

答案 0 :(得分:104)

好的,我终于找到了答案:git commit -m "Test"显然已经解决了这个问题。结果是一个空提交,没有任何更改。即使Github显示一个空提交,但它仍然有效。

答案 1 :(得分:57)

你最终得到了一个空的合并提交(两个父母)还是一个空提交?在后一种情况下,您可以删除.git/MERGE_HEAD

更新:您可以使用MERGE_HEADas of git 1.7.4)或git merge --abortas of git 1.6.2,而不是手动删除git reset --merge })。

还值得一提的是,至少从git 1.8.3开始(可能更早?)如果实际的合并正在进行并且需要提交(如果你指定了{,那么你应该看到这样的status消息例如{1}}:

--no-commit

如果你没有看到这个并且仍然收到# 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等)旁边创建MERGE_HEAD文件,以跟踪有关正在进行的合并的信息(具体来说,是commit(s)被合并到当前HEAD中)。如果删除它,Git将不再认为合并正在进行中。显然,如果合并确实在进行中,那么您不希望删除此文件。

答案 2 :(得分:11)

使用git reset命令,不带参数。 Docs