繁体   English   中英

如何重新合并在github中还原的提交?

[英]How can I re-merge commits that were reverted in github?

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

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

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

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

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

有人能帮助我理解这个吗?

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

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

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

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

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM