Git说一个文件没有被合并,我不能提交,但该文件似乎被合并

当我合并分支时,我有大约12个文件冲突。 我手动修复所有的冲突,并上演档案。 但现在当我尝试提交时,它说其中一个文件没有被合并。

U app/models/disclosure_event.rb fatal: 'commit' is not possible because you have unmerged files. Please, fix them up in the work tree, and then use 'git add/rm <file>' as appropriate to mark resolution and make a commit, or use 'git commit -a'. 

当我inputgit status ,它显示所有更改的文件,包括“披露_事件git status ”,在Changes to be committed 。 它没有显示任何文件为unstaged。 我一再试图添加文件,但似乎什么都不做。 如果我打开文件,一切看起来都很棒。

有任何想法吗? 我完全卡住了。

我不能告诉你什么是错的,但你可以试试

 git reset app/models/disclosure_even.rb git add app/models/disclosure_even.rb 

然后提交。

今天我在分行合并(而不是重新分配)上的情况完全一样。

我发现,该文件错误,在你的情况:

 U app/models/disclosure_event.rb 

没有git状态。 但是在gitk GUI中可能会被视为未被合并。 也没有在工作副本(搬到我的情况另一个地方)。

我试过git rm ,它解决了这个问题:

 git rm app/models/disclosure_event.rb 

之前我遇到过这种情况, Git确定你将一些文件保留为合并前的样子,并认为你还没有合并它们。 那个时候我search了一下,发现了许多build议,只是git rebase --skip 。 它为我工作。

这种情况的更详细的描述: http : //git.661346.n2.nabble.com/BUG-git-rebase-is-confuse-if-conflict-resolution-doesn-t-produce-diff-td726597.html

类似的问题: Git rebase:冲突继续阻止进度

不过,我不确定这是否属于你的情况。

我尝试了两个build议,没有任何运气。 而且我不能把它重置回HEAD,所以我只是重新克隆了仓库,并且完成了整个合并,没有任何问题。 对于它的价值,我现在强烈推荐pimmer的vimdiff …

设置远程是origin和分支是master ,并说你已经有master检出,可能会尝试以下内容:

 git获取原点
 git reset --hard origin / master

它将设置当前分支并将其指向远程分支的HEAD。