git - 如何将功能( 在主题分支中) 移植到其他分支?

  显示原文与译文双语对照的内容

假设我有 2个平行长的分支: masterexperimental 。我在 experimental的一个主题分支中做了一些工作,我为一些特性( feature1feature2feature3 ) 做了这个。 如何将 feature2 中完成的工作移植到 master 上?

我的初始存储库:


 master
 |
A-B-C
 
 D-E I L P
///|
 F-G-H//|
 | J-K/experimental
 feature1 | M-N-O
 feature2 |
 feature3

我想要的知识库:


 master
 |
A-B-C-----------------------------J'-K'
 
 D-E I L P
///|
 F-G-H//|
 | J-K/experimental
 feature1 | M-N-O
 feature2 |
 feature3

我可以想到的一种方法是 git checkout master; git cherry-pick J K 但这很容易出错,并且主题分支可能有许多不同的提交。

我希望它能像 git checkout master; git <transplant-commits-in-topic-branch-onto-current-branch> feature2 我对移植到common的所有命令都很熟悉,但我想移植的只是和 K 之间的差异,而不是提交散列散列。

一点上下文:我正在研究一个基本的代码库,但是我想要回复一些特性。 我在主题分支中开发了所有新特性,然后合并到主分支中。

时间: 原作者:

如果你只是尝试将 feature2 移动到 master,而'i'和'k'不依赖于 feature1 中所做的更改,则可以将它的移植为:


git rebase --onto master feature1 feature2

这种语法松散地说,是"的feature2master 。 原来的upstream 是 feature1"

然后如果将 feature2 合并到 master 中,它将是一个快速的向前合并。

但是,如果 feature2 依赖于不会在上出现的更改,整个情况会变得更加复杂,你希望做什么完全取决于你的工作流以及你如何与父项目相关。 樱桃选择会工作。"。"。只要你愿意将你的特征分支合并到原来的原来的地方。 或者你可以改变所有分支,以便 feature2 干净地应用于 master,或者。"。 大约有十几个方法。 这确实取决于你对这些分支的长期计划。 一般情况下,如果可以帮助,请将 feature2 ( 还有 feature3 等等) 切断 master 。 这将给你节省很多麻烦。

原作者:
...