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

时间:2016-11-23 15:54:14

标签: git git-branch git-rebase cherry-pick branching-strategy

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

enter image description here

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

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

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

所以我认为一开始看这两条路都不容易,但是有点经验可以做到,事件这是一种更顺畅的体验,然后在tfsvc中重命名目录。