Git合并错误 "无法提交,因为您有未合并的文件"

249

我在编辑代码之前忘记了执行git pull命令;当我提交新代码并尝试推送时,会出现错误信息“无法推送”。

此时,我执行了git pull命令,然后出现了一些有冲突的文件。我解决了冲突,但是不知道接下来该怎么做。

我尝试再次执行git commit命令,但出现了“无法提交,因为存在未合并的文件”的提示:

error: Committing is not possible because you have unmerged files.

1
你可能想要改变你的git工作流程,这样你就不会在第一时间遇到这种情况。我现在没有时间详细说明,但是我考虑的方案包括git merge -X theirs或者git pull -X theirs。可能不是两个都需要,但我不确定。 - Henke
7个回答

347

如果您已经解决了冲突,需要使用 git add [文件名] 将文件添加到暂存区,然后像平常一样提交。


3
如果那些是我没在工作的文件,我还需要将它们添加吗?最好的处理方法是什么? - R11G
2
我必须为一个在我正在合并到当前分支的分支中被删除的文件执行此操作。Git将其标记为冲突,因此我必须在本地删除该文件,然后使用git add the_file来提交合并。 - Brendon Muir
33
"git status" 将会显示出存在冲突的文件。 - jonnystoten
1
@jonnystoten 感谢您的评论!我使用了 git status 命令,并发现一个文件显示为 both deleted。WebStorm UI 没有显示问题,只是说无法提交合并。问题已解决! - Yuri Predborski
如果您不想将该文件添加到提交中,即使解决了提交问题后仍然出现错误,只需将该文件暂存和取消暂存即可解决错误。 - shubham rajput
显示剩余2条评论

69

你需要做两件事情。 首先,使用以下内容添加更改:

git add .
git stash  

git checkout <some branch>

它应该解决你的问题,就像它解决了我的问题一样。


4
只需要执行 "git add ." 即可,无需其他操作。 - AbaEesa
3
如果你不想将所有的工作文件都添加到 Git 中,这个功能非常管用。 - courtsimas
3
除非你准备将所有本地文件添加到 GitHub 存储库中,否则不要运行“git add .”。 - jtb
请不要使用stash..如果我们移除所有您所更改的内容。 - ElsayedDev
这样做可以摆脱阻塞消息,但已解决的冲突更改也将被回滚。如果您想保留它们,请复制“src”文件夹,执行此答案中的操作,然后将“src”粘贴回去。 - Zon

13

在从上游仓库中获取更改并使用 git stash pop 之前,可以使用 git stash 保存当前仓库,以便进行所需的提交。昨天我遇到了同样的问题,因此需要这样做。


11

这个错误发生在你解决了冲突,但是文件仍然需要添加到暂存区。使用git add .可以解决它。然后尝试提交和合并。


5

自 git 2.23(2019年8月)以来,您现在可以使用以下快捷方式: git restore --staged [文件路径]。通过这个命令,您可以忽略一个有冲突的文件,而无需添加和删除它。

例如:

> git status

  ...
  Unmerged paths:
    (use "git add <file>..." to mark resolution)
      both modified:   file.ex

> git restore --staged file.ex

> git status

  ...
  Changes not staged for commit:
    (use "git add <file>..." to update what will be committed)
    (use "git restore <file>..." to discard changes in working directory)
      modified:   file.ex


有没有办法将此命令应用于所有文件,因为我有很多需要合并的文件,按名称对每个文件应用此命令将是相当繁琐的任务。 - Lint
1
@Lint您可以应用于路径中的所有文件。例如:git restore --staged . 或者 git restore --staged folder/ - macabeus

2
我遇到过类似的问题,最终解决方案是删除"未合并路径"下的文件。这些文件需要使用git rm命令来删除。

0

因此,从上面的错误来看。您需要执行的操作是恢复代码 (git revert HEAD),然后执行git pull,之后重新进行更改,再次执行git pull,然后就可以成功提交或合并而不会出现任何错误了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接