使用git
我有两个长期存在的分支:master
和develop
。功能分支取自develop
,完成后合并回develop
。一旦我们满意,我们就会将内容合并到master
中。
我遇到的"问题"是master
现在比develop
提交一个。因此,从develop
的尖端获取的下一个分支是master
后面的一个提交。我应该担心这个吗?
我知道这可以通过执行快进合并到master
中来处理(因此不会创建额外的合并提交),但我真的需要关心这个吗?我问的原因是,感觉develop
在每次新feature
>develop
>master
合并时都会变得越来越偏离master
。
编辑:我正在使用GitLab/GitHub。合并请求/拉取请求功能需要非快进合并。
我唯一担心的是为什么master
需要与develop
合并。这应该是一个快进。这表明master
中有些东西不在develop
,比如热补丁,所以你不是在生产中的所有东西之上开发。
你应该有这样的情况:
B - C E - F H - I
/ / /
A ----- D ----- G ------ J [develop]
[master]
master
位于 D 处,并且之前已合并了一个功能分支(B、C、D)。develop
在J,并合并了两个功能分支。当你git checkout master; git merge develop
它应该是一个简单的快进到J。
如果您需要合并,则意味着master
和develop
已经分道扬镳。这可能意味着有人热补丁master
并且该补丁没有回到develop
。例如,热补丁为 E。
B - C E - F H - I
/ / /
A ----- D ----- G ------ J [develop]
L [master]
现在,当您git checkout master; git merge develop
时,它将需要合并。
B - C E - F H - I
/ / /
A ----- D ----- G ------ J [develop]
L -------------- K [master]
这种情况将继续发生。
这不仅仅是一个麻烦。这意味着develop
永远不会真正反映合并后将在master
中运行的代码。您正在开发和测试的代码库与生产中的代码略有不同。最终,您将完全测试的develop
合并到master
中,生产将中断。
您可能需要查看使用这些技术之一master
中是否有任何不develop
提交,并将它们挑选到master
中。
或者,您可以rebase
开发到主节点上,而不是合并,可能使用-p
来保留您的功能分支。然后合并(即快进)。
那会是这样的,从热补丁大师开始......
B - C E - F H - I
/ / /
A ----- D ----- G ------ J [develop]
L [master]
然后git checkout develop; git rebase -p master
.
B - C E1 - F1 H1 - I1
/ / /
A ----- D - L ------ G1 ------ J1 [develop]
[master]
现在,您可以全面测试develop
知道它拥有"合并"到master
中后将拥有的一切。