我使用分支master
进行开发,使用release
进行发布相关的事情。理想情况下,我希望在每次发布之前看起来像这样:
v release
o - o - o
/
o - o - o - o
^ master
这可以通过将版本重新定位到master
来实现,但是将release
推送到原点会变得有问题。如何最好地处理这个?
答案 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)