Git说文件是未合并的,我无法提交,但文件似乎已合并

时间:2011-07-23 02:22:33

标签: git merge conflict

合并分支时,我有大约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'.

当我输入git status时,它会在Changes to be committed下显示所有已更改的文件,包括“disclosure_event.rb”。它显示没有未分段的文件。我一再尝试添加该文件,但似乎什么也没做。如果我打开文件,一切看起来都很棒。

有什么想法吗?我完全卡住了。

5 个答案:

答案 0 :(得分:59)

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

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

然后提交。

答案 1 :(得分:13)

今天我在分支合并(而不是变基)上的情况完全相同。

我发现,在您的情况下,该文件出现错误:

U      app/models/disclosure_event.rb

在git状态中缺席。但是可以看作是在gitk GUI中未合并。它也没有出现在工作副本中(在我的案子中转移到另一个地方)。

我尝试git rm,它解决了问题:

git rm app/models/disclosure_event.rb

答案 2 :(得分:7)

将远程设置为origin,分支为master,并说您已经签出master,可以尝试以下操作:

git fetch origin
git reset --hard origin/master

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

答案 3 :(得分:3)

我在使用rebase之前遇到过这样的情况。 Git确定您在合并之前保留一些文件,并认为您仍然没有合并它们。那段时间我用Google搜索并找出许多建议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: conflicts keep blocking progress

但是,如果你有合并,我不确定你的情况。

答案 4 :(得分:3)

我没有运气就尝试了2条建议。而且我无法将其重置为HEAD,因此我只是重新克隆了存储库并完成了整个合并并且没有任何问题。对于它的价值,我现在强烈推荐p4merge而不是vimdiff ...