我们已经接近分支模型,我们有一个代表生产代码的master
分支和代表未来版本的release-x.x
分支。Git分支模型:几个问题
然而,也有少数情况下,我们不知道如何有效地解决:
直播bug修复是不相关的当前版本
新
feature
是支链的release-2.0
的并完成模块A的重写。新的
feature
已完成并合并在release-2.0
。当前活动模块A中的错误在
master
上找到并修复。
在这一点上,我们推测有2种可能:
我们变基上
master
release-2.0
带来错误修复和解决冲突(丢弃错误修复代码也就是现在无关)。最终,我们在master
版本准备好后合并release-2.0
。我们摘樱桃只有bug修正是相关的释放到
release-2.0
,当释放准备就绪,我们覆盖了整个master
历史与release-2.0
历史。
解决方案#1迫使我们解决合并与我们知道是不是需要提交冲突,但解决方案#2迫使我们擦拭全master
分支,由release-2.0
分支的历史上每一个版本替换它。这引入了一些丢失错误修复的机会,我们忘记了在release-2.0
上的选择,并且还可以打破在发布之前支持master
的错误修复。
一个功能不使其进入发行毕竟
- 我们创建了一个新的
feature
,重订上release-2.0
,并与--no-ff
合并为release-2.0
。 - 发现了一些错误,所以我们在
feature
上修复它们并重新执行上述合并过程。 - 客户再次审查该功能,决定他们想要改变很多事情 - 没有这些功能,该功能没有价值,但我们无法对
release-2.0
进行这些更改,并且必须等到release-3.0
。
什么是处理这种情况的正确方法?我们是否应该恢复与在release-2.0
中完成的功能相关的所有提交,并显示一条消息,如“恢复功能X - 推回到3.0”,然后再合并feature
到release-3.0
?
好像这里有多个问题,这两者都是主要处理意见。是否有可能缩小问题的焦点并将其作为一个技术问题重新说明? – larsks
@plalx你有答案解决你的问题吗?如果是,您可以将其标记为答案。这将有利于其他有类似问题的人。 –