将功能从出版的分支转移到另一个分支机构的最佳实践



假设我们的发行分支看起来像这样。

* Feature 3
|
* Feature 2
|
* Some fix
|
* Feature 2
|
* Feature 1

我们将要发布,但事实证明,功能2 必须从版本中拆除,但我们希望将实现保留在其他临时分支中。

现在,由于发行分支是公共历史,因此重新打算毫无疑问。据我所知,reverting ALL 功能2 commits是这里唯一可以接受的解决方案,不要弄乱历史记录。

现在,真正的问题是,将该功能保留在临时分支中要合并到下一个版本版本分支中的最方便方法是什么?例如,如果我在主分支之前将主题分支分支在主分支中,那么主题分支已经与主分支保持最新,但理想情况下,我想在主分支领先之前将其合并回该功能。<<

我最终在恢复后分支,并在临时分支中重新恢复。这使得临时分支存储在主分支之前,但是对于其他阅读历史记录的解决方案感觉有些笨拙且难以理解。

那么解决这种情况的最佳实践是什么?

对于在恢复之前还是在恢复后创建topic分支,这与错误没有区别。您只需要将功能2挑选到topic分支,然后将topic分支合并到release分支中。

为了轻松解释,让功能2a和功能2b进行两个提交:

* Feature 3
|
* Feature 2b
|
* Some fix
|
* Feature 2a
|
* Feature 1

假设topic分支是在恢复之前创建的(可以在恢复后创建topic),然后您可以将Cherry-Pick cherry-Pick cherry conting commits功能2A和功能2B和topic分支:

git checkout -b topic
git cherry-pick <commit id for Feature 2a>
git cherry-pick <commit id for Feature 2b>

然后您可以在发行分支的顶部恢复功能2提交,并且提交历史记录将看起来:

* Revert Feature 2b (release)
|
* Revert Feature 2a
| * cherry pick Feature 2b (topic)
| * cherry pick Feature 2a
|/
* Feature 3
|
* Feature 2b
|
* Some fix
|
* Feature 2a
|
* Feature 1

在下次发行版中,您可以在release分支上进行更改,然后将topic分支合并到release分支中,以便功能2合并到release分支:

*  merge topic into release branch (release)
| 
* | make changes
| |
* | Revert Feature 2b 
| |
* | Revert Feature 2a
| * cherry pick Feature 2b (topic)
| * cherry pick Feature 2a
|/
* Feature 3
|
* Feature 2b
|
* Some fix
|
* Feature 2a
|
* Feature 1

最新更新