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

3
在进行 TFS 迁移(完全不同的分支概念)后,我需要将修复合并到多个发布分支中,但这些分支并不相同,它们大多数是相似的,但是产品不同(例如品牌、连接字符串等),因此我无法在此处使用 nvie gitflow 一种产品分支策略。

enter image description here

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

在这里,您可以找到一个极其简化的分支结构,基本上我想将b1中的hotfix1分支合并到tesztb3中,但不包括b1上之前的提交(c3,c4)。
挑选或变基可能有所帮助,但我没有成功完成,而且我对高级git使用经验不是很丰富。因此,请告诉我如何做,或者我应该做什么才能完成它。

1
你还应该提到你已经尝试过什么。Cherrypicking 最可能是你想要的,但你应该说明你尝试了哪些 cherrypicking 和 rebasing 命令以及为什么它们没有产生预期结果。 - Vampire
1个回答

0

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

基本上,我们可以在hotfix1上单独挑选每个提交到teszt3,但这很笨拙。

所以我们可以从b1创建一个合并分支,将hotfix1合并到其中,然后将由合并创建的提交cherry-pick到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合并到我们的新合并分支中,并创建一个拉取请求返回到teszt3。

所以我认为两条路径一开始看起来都不容易,但有了一点经验就可以做到,而且这比在tfsvc中重命名目录要顺畅得多。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接