在git / GitLab中管理长期存在的分支

时间:2017-03-06 18:38:52

标签: git branching-and-merging

使用git我有两个长寿分支:masterdevelop。功能分支取自develop,然后在完成后合并回develop。一旦我们开心,我们就会将内容合并到master

"问题"我的意思是master现在是develop之前的一次提交。因此,从develop的提示中获取的下一个分支是master后面的一个提交。 我应该关注这个吗?

我知道这可以通过执行快进合并到master来处理(因此不会创建额外的合并提交),但我真的需要关心这个吗?我问的原因是因为感觉develop在每个新的master - > feature - > develop上变得越来越偏离master合并。

编辑:我正在使用GitLab / GitHub。合并请求/拉取请求功能需要非快进合并。

1 个答案:

答案 0 :(得分:2)

我唯一担心的是master需要与develop合并的原因。它应该是一个快速前进。这表明master中的某些内容不在develop中,就像热补丁一样,因此您不会在生产中的所有内容上进行开发。

你应该有这样的情况:

  B - C   E - F   H - I
 /     \ /     \ /     \
A ----- D ----- G ------ J [develop]
        [master]

master位于D,并且之前已合并了一个功能分支(B,C,D)。develop位于J,并且已合并了两个功能分支。当您{{1它应该是一个简单的快进J。

如果您需要合并,则表示git checkout master; git merge developmaster已分歧。这可能意味着有人对develop进行了热修补,而该修补程序尚未返回master。例如,热补丁是E。

develop

现在当你 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中,生产将会中断。

您可能希望查看mastermaster中是否有develop使用one of these techniquescherry-pick进入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知道它已经“合并”到<Waypoint onEnter={this.handleWaypointEnter} onLeave={this.handleWaypointLeave}/>后的所有内容。

相关问题