如何更新发布分支?

时间:2016-08-25 15:05:39

标签: git branch

我使用分支master进行开发,使用release进行发布相关的事情。理想情况下,我希望在每次发布之前看起来像这样:

                      v release
              o - o - o 
             /
o - o - o - o
            ^ master

这可以通过将版本重新定位到master来实现,但是将release推送到原点会变得有问题。如何最好地处理这个?

3 个答案:

答案 0 :(得分:1)

处理这种情况的常用方法是强制将release分支推送到远程,通过:

git checkout release
git push --force origin release

正如您可能怀疑的那样,这会成为问题,因为它会重写公共release分支的历史记录,这意味着其他任何负责此分支的人都可能会得到意想不到的结果。

但是,让我们仔细看看release分支的含义。通常,发布分支将成立,因为软件产品中的里程碑需要一堆功能。发布完成后,可以冻结相应的分支并进一步阻止提交。如果发布需要修复,请让他们进入一个新的分支。

为了获得优势,您可以非常安全地重新定位release上的master分支,并强制推送,如果很少有人,甚至没有人,需要再拉这个分支。此时间点恰好是发布时间,此时release分支上的所有活动都应该停止。

所以,我的建议是在周期结束时强制推动你的release分支。

答案 1 :(得分:1)

正如fireflieslive所提到的,你应该使用merge而不是rebase。这样,您的历史记录将如下所示:

                      v release(1)        v release(2) 
              o - o - o  -------  o - o - o 
             /                   /
o - o - o - o - o - o - o - o - o
            ^ master(1)         ^ master(2)

我现在已经描述了两个不同的版本(以及该版本发布时主版的状态)。

具体而言,无论何时你想发布,都要做

git checkout release
git merge master
<edit release related stuff and commit>

答案 2 :(得分:0)

使用merge代替rebase

  

git rebase的黄金法则是永远不要在公共分支上使用它

atlassian git tutorial