每当我尝试推入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 .
并再次尝试没有任何区别。
怎么了?
答案 0 :(得分:104)
好的,我终于找到了答案:git commit -m "Test"
显然已经解决了这个问题。结果是一个空提交,没有任何更改。即使Github显示一个空提交,但它仍然有效。
答案 1 :(得分:57)
你最终得到了一个空的合并提交(两个父母)还是一个空提交?在后一种情况下,您可以删除.git/MERGE_HEAD
。
更新:您可以使用MERGE_HEAD
(as of git 1.7.4)或git merge --abort
(as 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