【问题标题】:How to solve a revert commit conflict如何解决还原提交冲突
【发布时间】:2017-04-02 15:10:26
【问题描述】:

我正在尝试学习如何使用 Git 和 GitHub。我制作了一个简单的 html 文件,我正在尝试恢复一些更改。

我正在使用 GitHub windows 应用程序,存储库在这里:https://github.com/ionutincau/Ceau

我的最后 2 次提交是“将 13 添加到列表”和“将帐户添加到列表”。我想恢复提交“将 13 添加到列表”,但我得到了这个文件:

<!DOCTYPE html>
<html>

<head>
    <title>Hi</title>
</head>

<body>
    <p>Hi, this is my first version</p>
    <p>TODO List:</p>
    <p>- Pictures</p>
<<<<<<< HEAD
    <p>- 13</p>
    <p>- Accounts</p>
=======
>>>>>>> parent of 76f0f70... Add 13 to list
</body>

</html>

我需要做什么?这是如何工作的?

【问题讨论】:

    标签: git github git-commit git-revert


    【解决方案1】:

    这是一个简单的冲突。如果你没有添加 accounts 行,Git 会发现恢复 76f0f70 只是删除 13 行。但现在它在 accounts 行中显示:“哇,我不知道如何恢复 76f0f70 的更改。我已经在文件中标记了有问题的部分,你能帮我手工吗?”

    所以你打开文件,删除不需要的 13 行和 Git 插入的所有标记:

    <body>
        <p>Salutare aceasta este prima versiune</p>
        <p>TODO List:</p>
        <p>- Poze</p>
        <p>- Accounts</p>
    </body>
    
    </html>
    

    现在您可以通过运行git add index.html 并提交来标记冲突已解决。历史现在将是:

    $ git log --pretty=oneline --abbrev-commit | head -n 3
    02933f8 Revert "Add 13 to list"
    d4b2377 Add Account
    76f0f70 Add 13 to list
    

    还原提交看起来像这样:

    $ git show --oneline 02933f8
    02933f8 Revert "Add 13 to list"
    diff --git a/index.html b/index.html
    index 9f99341..6bec1cf 100644
    --- a/index.html
    +++ b/index.html
    @@ -9,8 +9,7 @@
            <p>Salutare aceasta este prima versiune</p>
            <p>TODO List:</p>
            <p>- Poze</p>
    -       <p>- 13</p>
            <p>- Accounts</p>
     </body>
    

    当然,在这种情况下,不使用git revert 直接删除不需要的行会更容易。

    【讨论】:

      【解决方案2】:

      我浏览了你的提交历史。要删除您的提交“将 13 添加到列表”,首先您必须抬起头来提交“重构”。

      git reset --hard 8816fb
      git cherry-pick d4b2377
      git push origin HEAD --force
      

      第一个命令会带你去“重构”

      第二个命令将选择您的“添加帐户到列表”来掌握

      最后你必须按下 --force 因为你重置了头部。

      如果您有任何问题或我误解了您的问题,请告诉我

      【讨论】:

      • 不过,这不会恢复。
      • 我以为他要求删除“将 13 添加到列表”提交。
      • 恢复提交不同于删除它。还原不会更改现有历史记录,它会记录撤消不需要的更改的新提交。
      • 我想恢复一个提交,而不是删除它
      • 但我不明白它为什么这样做,这是一个简单的提交,它不应该首先发生冲突
      【解决方案3】:

      如果您在两次提交中更改的行是邻居,则会发生还原冲突。但是如果你的换行是这样的:

      <body>
          <p>Hi, this is my first version</p>
          <p>TODO List:</p>
          <p>- Pictures</p>
          <p>- 13</p>
          something
          <p>- Accounts</p>
      </body>
      

      您恢复并且没有冲突。 原因是: Conflict while trying a revert in Git

      【讨论】:

        【解决方案4】:

        让我告诉你根本原因: "换行,换行,br"

        第一次输入 &lt;p&gt;- 13&lt;/p&gt; |(光标在那儿)

        你第二次输入(&lt;p&gt;- Accounts&lt;/p&gt;),git居然认为你 删除&lt;p&gt;- 13&lt;/p&gt; 并添加新的&lt;p&gt;- 13&lt;/p&gt;,所以第二次提交此内容:

        <p>- 13</p>
        <p>- Accounts</p>
        

        当你revert第一次提交时,git会生成新的提交“revert commit” 第二次提交和“revert commit”之间存在冲突

        解决方案 A 实际上,对于这种情况,不需要使用 revert 命令;只需手动删除即可 溶液 B 关注zoul回答

        git revert: Why do I get conflicts? git revert: Why do I get conflicts?

        【讨论】:

          猜你喜欢
          • 2021-07-28
          • 1970-01-01
          • 2015-06-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-03-12
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多