如何解决恢复提交冲突

时间:2016-11-18 17:14:42

标签: git github git-commit git-revert

我正在尝试学习如何使用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>

我需要做什么?这是怎么回事?

4 个答案:

答案 0 :(得分:2)

这是一个简单的冲突。如果您没有添加帐户行,Git会发现还原76f0f70只是删除 13 行。但现在它点击帐户行并说:“哇,我不知道如何从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就更容易打扰并删除不需要的行。

答案 1 :(得分:0)

我查看了您的提交历史记录。删除你的提交&#34;添加13到列表&#34;首先,你必须抓住你的想法,重构&#34;。

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

第一个命令会引起你的反思&#34;重构&#34;

第二个命令将选择你的&#34;添加帐户到列表&#34;掌握

最后你必须推动--force,因为你重置了头部。

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

答案 2 :(得分:0)

如果两个提交中的更改行是邻居,则会发生还原冲突。但如果您的更改行如下:

<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

答案 3 :(得分:0)

让我告诉您根本原因: “换行符,换行符,br”

第一次输入 <p>- 13</p> |(光标在那里)

第二次输入(<p>- Accounts</p>)时,git实际上认为您 删除<p>- 13</p>并添加新的<p>- 13</p>,以便第二次提交此内容:

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

当您第一次还原提交时,git将生成新的提交“还原提交” 第二次提交和“还原提交”之间存在冲突

解决方案A 实际上,在这种情况下,不需要使用还原命令;只需手动删除它 解决方案B 跟随祖尔的答案

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