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

Posted

技术标签:

【中文标题】Git说文件未合并,我无法提交,但文件似乎已合并【英文标题】:Git says a file is unmerged and I can't commit, but the file seems to be merged 【发布时间】:2011-10-11 11:43:37 【问题描述】:

我在合并分支时遇到了大约 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”。它显示没有文件未暂存。我一再尝试添加文件,但似乎什么也没做。如果我打开文件,一切看起来都很棒。

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

【问题讨论】:

听起来像是又一个 Git 错误..... Git: can't undo local changes (error: path ... is unmerged)的可能重复 【参考方案1】:

我不能告诉你出了什么问题,但你可以试试

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

然后提交。

【讨论】:

我不得不使用“git reset -- lib/OaisAip.php”,但这让我继续前进! 我必须指定git reset HEAD app/models/disclosure_even.rb。否则,我会得到git reset app/models/disclosure_even.rb =&gt; fatal: ambiguous argument 'app/models/disclosure_even.rb': unknown revision or path not in the working tree. Use '--' to separate paths from revisions【参考方案2】:

我今天在分支合并(不是变基)时遇到了完全相同的情况。

我发现,在你的情况下,那个文件出错了:

U      app/models/disclosure_event.rb

在 git 状态中不存在。但是在 gitk GUI 中可以被视为未合并。它在工作副本中也没有(在我的情况下移动到另一个地方)。

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

git rm app/models/disclosure_event.rb

【讨论】:

这里没有工作...git rm backend/server/main.js =&gt; backend/server/main.js: needs merge【参考方案3】:

设置远程为origin,分支为master,并说你已经签出了master,可以试试以下方法:

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

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

【讨论】:

【参考方案4】:

我以前在使用 rebase 时遇到过这种情况。 Git 确定您在合并之前保留了一些文件,并认为您仍然没有合并它们。那个时候我用谷歌搜索并找到了很多建议来做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

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

【讨论】:

【参考方案5】:

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

【讨论】:

我还推荐mcdiff(来自mc 包)而不是可怕的vimdiff。

以上是关于Git说文件未合并,我无法提交,但文件似乎已合并的主要内容,如果未能解决你的问题,请参考以下文章

git 怎样查找未合并的文件?

git无法提交,存在未提交的修改,在重新合并前或者撤销更改

没有文件更改数据的合并提交无法在数据框中显示

Git冲突“都已删除”

Git:合并更改

使用大文件恢复提交并解决二进制合并冲突