【发布时间】:2017-08-03 20:17:04
【问题描述】:
我们几乎已经确定了一个分支模型,其中我们有一个代表生产代码的 master 分支和一个代表未来版本的 release-x.x 分支。
但是,我们不确定如何有效解决一些情况:
实时错误修复与当前版本无关
一个新的
feature是release-2.0的分支,并完全重写了模块A。新的
feature完成并合并到release-2.0中。在
master上发现并修复了当前直播模块 A 中的错误。
此时我们认为有两种可能的情况:
我们将
release-2.0重新设置为master以带来错误修复和修复冲突(丢弃现在不相关的错误修复代码)。最终,当发布准备就绪时,我们将release-2.0合并到master中。-
我们只挑选与发布相关的错误修复到
release-2.0,当发布准备好时,我们用release-2.0历史覆盖整个master历史。
解决方案 #1 迫使我们解决合并冲突,我们知道不需要提交,但解决方案 #2 迫使我们擦除整个 master 分支,并在每个版本中将其替换为 release-2.0 分支的历史记录。这带来了丢失我们忘记在release-2.0 上挑选的错误修复的小概率,并且还可能破坏在发布之前由master 分支的正在进行的错误修复。
一个功能最终没有进入发布
- 我们创建一个新的
feature,基于release-2.0并将其合并到release-2.0和--no-ff。 - 发现了一些错误,因此我们在
feature上修复它们并重做上述合并过程。 - 客户再次查看该功能并决定他们想要更改许多内容 - 没有这些内容,该功能没有任何价值,但我们无法为
release-2.0进行这些更改,并且必须等到release-3.0。
处理这种情况的正确方法是什么?我们是否应该使用诸如“Revert feature X - push back to 3.0”之类的消息来恢复与release-2.0 中完成的功能相关的所有提交,然后将feature 合并到release-3.0?
【问题讨论】:
-
这里似乎有多个问题,这两个问题主要是意见问题。是否可以缩小问题的焦点并将其重新表述为技术问题?
-
@plalx 你有答案来解决你的问题吗?如果是,您可以将其标记为答案。这将使有类似问题的其他人受益。
标签: git version-control branching-strategy