如何在Git中恢复一个文件的冲突?

如何在Git中恢复一个文件的冲突?,git,Git,我在合并后解决了部分冲突,但我发现在当前冲突中,我保留了错误的代码部分。由于错误,已经完成了提交,并且(不是因为这个原因)在解决此冲突之前,我无法使用撤销返回。有什么方法可以让我回到上次冲突之前 更详细的信息: 我在文件1中解决了3个冲突 我在文件2中解决了5个冲突 我在文件3中解决了2个冲突,在解决第3个冲突时,我保留了错误的代码部分。我犯了错误。如何返回到文件3中的第三个冲突之前,或重做文件3中的冲突 以下是您可以做的 git reset --hard HEAD~1 这将使分支的头指向

我在合并后解决了部分冲突,但我发现在当前冲突中,我保留了错误的代码部分。由于错误,已经完成了提交,并且(不是因为这个原因)在解决此冲突之前,我无法使用撤销返回。有什么方法可以让我回到上次冲突之前


更详细的信息:

  • 我在文件1中解决了3个冲突
  • 我在文件2中解决了5个冲突
  • 我在文件3中解决了2个冲突,在解决第3个冲突时,我保留了错误的代码部分。我犯了错误。如何返回到文件3中的第三个冲突之前,或重做文件3中的冲突

    • 以下是您可以做的

      git reset --hard HEAD~1
      
      这将使分支的头指向以前的一次提交。然后签出分支以获取最新更改:

      git checkout <branch>
      
      git-reere
      有时是一种选择 有几种方法可以解决这个问题。例如,如果您在开始解决冲突之前已打开,则可以从头开始重新执行合并,并使用
      git rere
      自动重新应用冲突解决方案

      一个替代的解决方案,只为你 但是,由于您已经提交了更改,您实际上可以通过使用
      git checkout--
      重新应用以前的冲突解决方案,其中
      是当前合并提交的提交sha:

      #首先,让我们撤消合并
      git重置——硬
      #接下来,重做合并
      git合并
      #接下来,我们将重新应用您以前的决议
      #来自上一个合并“PM”,用于文件1和2
      git签出PM--文件1
      git签出PM--文件2
      #接下来,继续修复文件3的冲突。。。
      #完成后,请提交
      git提交
      
      解释 命令

      git checkout <revision> -- <file>
      
      git签出--
      

      将从
      中签出
      的版本。您可以从中找到有关此问题的更多文档。

      您必须签出旧的提交并重新执行合并。如果在开始解决冲突之前启用了
      git rere
      ,则可能更容易解决此问题。
      http://git-scm.com/blog/2010/03/02/undoing-merges.html
      
      git checkout <revision> -- <file>