1

大多数 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 是从 tag 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 是一个非常糟糕的主意,因为我已经推送到 master,rebase 推送的更改不可能是好的。

4

1 回答 1

0

在这种情况下,您需要hotfix v1.0,但您不能只将该修补程序合并到 master ,因为这会将修补程序提交到 after tag v1.1

正确:production2,从现在开始,必须运行hotfix1.0分支,并且您可以标记v1.0.1那里(在hotfix1.0分支中)。
master仅引用主要版本,它不能引用所有中间版本,因为它们可能是混合顺序的。

您还可以将该修复合并/樱桃挑选release1.1到尚未合并回的分支,master并准备 1.1 版本。

于 2013-11-09T10:54:22.440 回答