繁体   English   中英

如何从通过Git在子分支中删除的祖先恢复还原?

[英]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的新功能。

我现在想恢复集成。 AB之间的大多数中间步骤是删除现在要返回的代码。

使问题复杂化的是,在B完成时,API确实发生了一些变化。 我主要想还原A这样我就可以记住新功能在代码中的集成位置,并且可以根据需要进行更新。

根据您的描述,我想我会选择以下两种方法之一。 这完全取决于AB之间A更改方式/更改方式,因此很难在不看代码的情况下说出最有效的方法。

选项1是从A创建一个新分支(例如C ),然后从AB之间的提交中挑选您想要的API更改。

第二种方法是撤消AB之间的所有删除(您现在要返回)。 首先是创建一个备份分支,以便无论您如何搞砸,都可以轻松倒带并重新开始(例如git branch B.mybackup B )。 然后做一个交互式的变基(例如git checkout B; git rebase -i A ),在其中删除删除要返回的代码的提交。

暂无
暂无

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

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