2017-03-03 72 views
0

我已经分叉了一个回购,并做了一些改变,然后推到我的主分支。然后,我将回购的变更提取出来并合并到我的主人手中。我遇到了很多合并冲突。我修复了所有这些,但是在代码中的某处,我错过了一次imp更改。我没有推动这个改变,也没有提交。我怎样才能恢复合并?我分叉的回购承诺有旧的承诺,我的回购有我的新承诺。如何还原合并?

回答

1

如果我正确地阅读了你的问题,你将东西合并为master,但是有一些问题,你想取消合并,并可能重新开始。在这种情况下,我认为你可以逃脱如下:

git reset --hard HEAD 

因为你没有犯任何事,合并是有唯一的真正的效果是,你直接在舞台工作文件,并可能,从合并中变得“脏”。在尝试合并之前,上面的命令会将工作和暂存文件重置为它们在HEAD提交时的状态。但你的分支的实际历史还没有改变,所以你在这方面是安全的。

如果你好奇,你将如何处理这种情况,如果你有其他工作所犯下的合并,现在可能对合并的顶部提交,你可以使用git rebase的直接提交。 Considerthe如下图:

... A --- B --- C --- F ... master 
    \    /
     --- D --- E ---  feature 

这里,featuremaster分歧在提交A,但随后被合并在合并到master提交F。现在你想删除合并提交。您可以变基master提交A如下:

git rebase <SHA-1 of commit A> 

Git会重播的所有提交的masterA顶部,但它会忽略这次合并提交其发生在F。默认行为是忽略合并提交并向后跟随主父路径,所以这是处理这种情况的一种方法。

+0

你是一个摇滚明星蒂姆。感谢您的详细解释。我学到很多东西 – Raaz