在代码耦合比较少的情况下,可以使用以下的分支策略。
(1)在各自的feature分支进行开发测试
(2)同一时间上线的需要合进同一个release分支进行回归测试,由于代码耦合较少,可能产生的冲突较少,手工解决。
(3)release分支经过回归测试后,即可上线。
如果在feature上线之前,master已经上线了大量变更,此时将feature合进release可能会产生大量冲突,此时需要对feature分支进行rebase操作,rebase后在feature分支上测试通过,才可以合进release。
rebase后的效果:
rebase命令相当于将m1,m2合进了feature分支,feature是在m2后拉出的,而m3,m4需要相应作出变更以适配m1,m2
需要注意的是,rebase命令对每一次commit都进行了变更来适配基线,整个分支都被改变了,需要重新提交到远程,如果分支有合作的开发人员,需要合别的开发人员沟通好。
相关命令:
git fetch # 拉取最新代码
git rebase master # 将当前分支变基到master
git status # 查看当前状态
# 解决冲突
git rebase --continute # 已适配第一个commit,继续下一个
git status
git rebase --skip # 没有冲突,继续下一个
# 所有commit均已适配
git push -f # 将rebase后的分支提交到远程,覆盖旧分支(仅在个人分支使用,或者与分支合作者沟通好)
git rebase也可以将一些commit合并,使得history更加美观已读(仅在个人分支使用,或者与分支合作者沟通好)
git rebase -i master # 将当前分支变基到master
# 显示如下
pick 6d36254 m1
pick 440e72f m2
# 改为
pick 6d36254 m1
fixup 440e72f m2
rebase完后,m1和m2将会被合并成一个新的提交(m1+m2)