使用git
我有两个长寿分支:master
和develop
。功能分支取自develop
,然后在完成后合并回develop
。一旦我们开心,我们就会将内容合并到master
。
"问题"我的意思是master
现在是develop
之前的一次提交。因此,从develop
的提示中获取的下一个分支是master
后面的一个提交。 我应该关注这个吗?
我知道这可以通过执行快进合并到master
来处理(因此不会创建额外的合并提交),但我真的需要关心这个吗?我问的原因是因为感觉develop
在每个新的master
- > feature
- > develop
上变得越来越偏离master
合并。
答案 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 develop
和master
已分歧。这可能意味着有人对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
中,生产将会中断。
您可能希望查看master
中master
中是否有develop
使用one of these techniques和cherry-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}/>
后的所有内容。