2016-11-18 205 views
2

我想学习如何使用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> 

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

回答

2

这是一个简单的冲突。如果您没有添加帐户一行,Git会发现恢复76f0f70只是删除该行。但现在它击中了帐户一行并说:“哇,我不知道如何恢复76f0f70的更改。 ?我已经标在文件中有问题的部分,你能帮助我的手”

所以你打开文件,删除不需要的线和所有标记的混帐插入:

<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 

但revert提交如下所示:

$ 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

0

我经历了你的提交历史。要删除您的提交“将13添加到列表”,首先您必须承担起“重构”的责任。

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

的第一个命令将你的头“重构”

第二个命令将挑选你的“添加帐户列出”掌握

最后你,因为你重新推--force头部。

如果您有任何问题,或者如果我误解你的问题,让我知道

+0

那不是恢复,虽然。 – zoul

+0

我以为他要求删除“添加13列表”提交。 – DilumN

+2

恢复提交与删除它不同。恢复不会更改现有的历史记录,它会记录新的提交以解除不需要的更改。 – zoul

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