如何将一个 git 分支合并到多个发布分支

How to merge a git branch to multiple release branches

在 tfs 迁移后(完全不同的分支概念)我必须将修复合并到多个发布分支,但分支并不相同,它们大多相似,但产品不同(例如不同的品牌、conn 字符串等)。 ), 所以我不能在这里使用 nvie gitflow one 产品分支策略。

https://github.com/MrKekson/Whosebug_question/network

在这里你可以找到一个大大简化的分支结构,基本上我想将 b1 的 hotfix1 分支合并到 tesztb3,但没有 b1 上的先前提交(c3,c4)。

Cherrypicking 或 rebase 可能会有帮助,但我没能完成它,而且我在高级 git 用法方面还没有很多经验。所以请告诉我如何去做,或者我应该改变什么来完成它。

好的,我解决了。至少有几种方法可以做到:

所以基本上,可以在 hotfix1 到 teszt3 上分别挑选每个提交,但它很笨拙。

因此我们可以从 b1 创建一个合并分支,将 hotfix1 合并到其中,然后挑选由合并创建的提交到 tesztb3,这将在 testb3 上产生一个新的提交。 甚至可以将 -x 添加到 cherry-pick 中,因此它会在新提交上创建一个注释,带有它的父 guid,或者我们可以将我们的 hotfix1 分支压缩为 1 个提交,然后 cherry-pick 那个。

或者我们可以根据最后一次提交(hf2)创建一个rebase分支,然后

git rebase --onto <new-parent> <old-parent> <lastcommit> 

--onto explained here,但 <new-parent> 是我们的目标分支 teszt3,我更喜欢在目标分支上为此创建一个合并分支,旧的父级是 hotfix1 的开始,在这种情况下 lastcommit 是hotfix1 上的 hf2。 然后将 teszt3 合并到我们新的合并分支,并创建一个 pull request 返回给 teszt3。

所以我认为这两条路乍一看都不容易,但只要有一点经验就可以做到,而且这是一种比在 tfsvc 中重命名目录更流畅的体验。