我想知道为什么在Pro Git书(Apress 2009)中,第3章的例子是:
master
分支上承诺的所有内容已经推送到生产iss53
分支,用于开发功能,添加一些临时更改并提交。master
分支并创建hotfix
分支master
分支并与hotfix
分支hotfix
分支在这一点上,我想知道为什么这本书会转到master
分支并与iss53
分支合并。这不会实际上使主分支处于中间状态吗?如果需要另一个热修复,那么master不适合进行热修复,我们必须手动选择合并之前的提交。不应该合并,转到iss53
分支并与hotfix
分支合并,以便现在将错误的内容合并到未来的版本中吗?
更新:实际上,本书假设iss53
工作已完成,并进行最后一次合并。但是如果iss53
上的工作还没有完成,我们想要在热修复中合并呢?
答案 0 :(得分:0)
@动静能量,
在这种情况下,您有三种选择:
cherry-pick
hotfix
提交iss53
master
合并到iss53
iss53
重新定位到master
就个人而言,我更喜欢#3。因为它提供了更清晰的历史。
但是,如果你有太多的开发人员(比如linux),#2可能会更容易。这应该是罕见的。在这种情况下,请确保将master
合并到稳定点(例如稳定点释放,而不是某些随机测试状态),因此历史记录不会太复杂。
LWN an article详细讨论了这一点。
答案 1 :(得分:0)
如果iss53
上的工作尚未完成但您需要此修补程序,则可以master
合并到iss53
,或者iss53
在{{{{}}之上。 1}}。
合并:
master
Rebase(你将在本章后面讨论):
git checkout iss53
git merge --no-ff master # --no-ff keeps the master tip where it is