[英]How to Restore Changes from An Ancestor that Were Removed in a Child Branch via Git?
我创建了一个新功能。 我将其提交以进行代码审查,然后被要求将其分为两部分,然后重新提交。 我现在完成的第一部分是新的API。 第二部分是将新API集成到现有代码中。 这是我的git repo当前的样子:
o-o-A-o-o-o-o-o-o-o-o-o-o-B
| |
Original API with Feature
Feature Integration Removed
A
是我最初在工作的分支。 B
是我创建的分支,在其中删除了集成代码,仅保留了API的新功能。
我现在想恢复集成。 A
和B
之间的大多数中间步骤是删除现在要返回的代码。
使问题复杂化的是,在B
完成时,API确实发生了一些变化。 我主要想还原A
这样我就可以记住新功能在代码中的集成位置,并且可以根据需要进行更新。
根据您的描述,我想我会选择以下两种方法之一。 这完全取决于A
和B
之间A
更改方式/更改方式,因此很难在不看代码的情况下说出最有效的方法。
选项1是从A
创建一个新分支(例如C
),然后从A
和B
之间的提交中挑选您想要的API更改。
第二种方法是撤消A
和B
之间的所有删除(您现在要返回)。 首先是创建一个备份分支,以便无论您如何搞砸,都可以轻松倒带并重新开始(例如git branch B.mybackup B
)。 然后做一个交互式的变基(例如git checkout B; git rebase -i A
),在其中删除删除要返回的代码的提交。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.