【问题标题】:Git merge error "commit is not possible because you have unmerged files"Git 合并错误“无法提交,因为您有未合并的文件”
【发布时间】:2020-10-25 00:36:11
【问题描述】:

我在编辑之前忘了git pull我的代码;当我提交新代码并尝试推送时,我收到错误“无法推送”。

那时我做了一个git pull,它突出了一些有冲突的文件。我删除了冲突,但我不知道从这里做什么。

我再次尝试git commit,但它说“提交是不可能的,因为你有未合并的文件”:

error: Committing is not possible because you have unmerged files.
  • 您可能想要更改您的 git 工作流程,以便您从一开始就不会遇到这种情况。我现在没有时间详细说明,但我想到的包括git merge -X theirsgit pull -X theirs。 - 可能不是两者,但我不确定。

标签: git git-merge


【解决方案1】:

如果您已经解决了冲突,您需要使用git add [filename] 将文件添加到阶段,然后正常提交。

【讨论】:

  • 如果这些是我没有处理的文件怎么办?然后我还应该添加它们吗?处理它的最佳方法是什么?
  • 我必须对在合并到当前分支的分支中删除的文件执行此操作。 Git 将其标记为冲突,因此我必须在本地删除文件,然后 git add the_file 才能提交合并。
  • 如何找到冲突列表?
  • git status 会显示有冲突的文件
  • @jonnystoten 感谢您的评论!我使用了git status 并找到了一个文件,上面写着both deleted。 WebStorm UI 没有显示问题,只是说它无法提交合并。解决!
【解决方案2】:

你需要做两件事。 首先添加更改

git add .
git stash  

git checkout <some branch>

它应该解决你的问题,因为它解决了我。

【讨论】:

  • 不仅需要 git add 。就足够了
  • 如果您不想 git add 您的所有工作文件,这也是一个沉重的打击
  • 不要运行“git add”。除非您准备好将所有本地文件添加到您的 GitHub 存储库。
  • 请不要使用 stash .. 我们删除所有你改变
  • 这样,您将摆脱阻塞消息,但已解决的冲突更改也将被回滚。如果您想保留它们 - 复制 src 文件夹,执行此答案中的操作,然后将 src 粘贴回来。
【解决方案3】:

您可以使用git stash 来保存当前存储库,然后再进行您要进行的提交(在将来自上游存储库的更改与git stash pop 合并之后)。当我遇到同样的问题时,我昨天不得不这样做。

【讨论】:

    【解决方案4】:

    当您解决冲突但仍需要将文件添加到阶段区域时会发生此错误。混帐添加。会解决它。然后,尝试提交和合并。

    【讨论】:

      【解决方案5】:

      自 git 2.23(2019 年 8 月)以来,您现在有一个快捷方式来执行此操作:git restore --staged [filepath]。 使用此命令,您可以忽略冲突文件,而无需添加和删除它。

      例子:

      > 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您可以申请路径内的所有文件。例如:git restore --staged .git restore --staged folder/
      【解决方案6】:

      我有一个类似的问题,归结为删除“未合并路径”下的文件

      必须使用git rm 删除这些文件

      【讨论】:

        【解决方案7】:

        所以从上面的错误。要解决此问题,您所要做的就是还原您的代码。 (git revert HEAD) 然后git pull 然后重做您的更改,然后再次git pull 并且能够提交或合并而没有错误。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-10-09
          • 1970-01-01
          • 2018-06-17
          • 1970-01-01
          • 2021-04-02
          • 2011-10-11
          相关资源
          最近更新 更多