如何重新合并在github中恢复的提交?

时间:2015-05-20 03:47:43

标签: git github version-control revert

我会尽力简明地描述我目前的情况,并会非常感谢你的一些建议。

今天早上我合并了一个代码的大功能分支,结果发现了一个严重的错误。为了解除它,我的同事在GitHub中恢复了合并(有几个提交),并且在拉动之后,一切看起来都很好。

在对功能分支进行一些调整之后,我想确保它可以再次进入,所以我使用了' git merge master'在我的功能分支上(就像我一直这样)确保一切都是最新的。

令人惊讶的是,结果是删除了我需要合并回主回购的所有新代码!

这是由于分支上发生的还原吗?通过git日志,我可以看到所有的提交仍然存在。而且更奇怪的是,github中的pull请求并没有显示diff中的任何原始提交,只是我自恢复以来的更改。

有人可以帮助我理解这个吗?

我知道有些人建议只是恢复还原,但我需要回到干净,因为我所做的更改涉及大部分代码的结构。

2 个答案:

答案 0 :(得分:7)

我曾遇到过同样的问题。我的解决方案是“恢复还原”#34;在将主人合并回我的分支之前。

这样做可以让您完成所有更改,包括您已获得的新修补程序。

git checkout master
git checkout -b master-with-revert-revered
git revert <revert commit id>
git checkout fixed-branch
git merge master-with-revert-revered

在那之后,你的固定分支应该可以直接合并回master,没有问题。

答案 1 :(得分:1)

  

我认为rebase是我需要的,只是想弄清楚如何从功能分支中再次完全删除我要添加的提交

如果你需要&#34; remoe / merge&#34;提交你应该使用squash 壁球是rebase选项之一。

为了使用它,您需要进行交互式变基 git rebase -i HEAD~10将打开一个vi(或您正在使用的任何其他编辑器)并允许您重新洗牌&#34;你的提交。您可以删除提交,将它们合并到一个提交,重新排序和更多。

您将在vi中找到一个选项列表以及您选择重新提交的提交列表(在上面的示例中,它将占用最后10个HEAD~10