大多数git分支模型都基于nvie的开发/发布/主/修补程序模型:http://nvie.com/posts/a-successful-git-branching-model
此模型假设您只有一个生产版本,并且不需要修复以前的生产版本。但是,如果您有两个作品,一个作为现场,另一个作为演示或备份现场,并且您希望分两个阶段以相对较长的间隙发布到两个环境,该怎么办?
假设v1.1已发布到production1,但是production2仍在运行v1.0,那么您在v1.0中发现了一个错误,并且无法等待v1.1发布。在这种情况下,您需要修补程序v1.0,但您不能只将该修补程序合并到master,因为这将在标记v1.1之后提交修补程序,该修补程序在以后才能发布。
在这种情况下,rebase会成为我的朋友吗?如何在不移动修补程序分支关闭点之后创建的任何标记的情况下将修补程序插入到主服务器中?
例如:
#假设hotfix从标签v1.0分支
git checkout master
git rebase hotfix
# hotfix is in right place on master, but how can I tag v1.0.1 from there?
# and will tag v1.1 be affected by this rebase?
编辑: 考虑一下,rebase是一个非常糟糕的主意,因为我已经推动了掌握,推动变革不可能是好的。
答案 0 :(得分:0)
在这种情况下,您需要
hotfix v1.0
,但是您不能只将该修补程序合并到master,因为这会将修补程序提交到标记v1.1
之后。
正确:从现在开始,production2必须运行hotfix1.0
分支,并且您可以在v1.0.1
分支中标记hotfix1.0
。
master
仅引用主要版本,它不能引用所有中间版本,因为它们可能是混合顺序。
您还可以合并/挑选修复到release1.1
分支,该分支尚未合并回master
,并准备1.1版本。