例如,长期功能分支可能会持续两周以上。在此期间,许多其他功能/错误修复分支可能会合并到主分支上。
有时长期功能分支需要这些分支,例如分支修复阻塞致命错误。
所以我尝试每两天将master分支合并到长期功能分支上。最后,我将feature branch合并到master上。
M1 -> M2 -> M3 -> M4 -> M5
\ \ \ \ /
F1 -> F2 -> F3 -> F4
但事实上,我想要一个以下的历史:
M1 -> M2 -> M3 -> M4 -> M5
\ /
F1 -> F2 -> F3 -> F4
因为当我恢复M5时我可以恢复整个分支。
我不喜欢merge --squash feature
,因为有多个人涉及功能分支,我希望历史保留。
M1 -> M2 -> M3 -> M4 -> M5
\ /
F1 -> M2'-> F2 -> M3' -> F3 -> M4' -> F4
M'表示由'merge --squash master'生成的提交,但我觉得这不好。
那么合并主要和长期功能分支的最佳方法是什么?
答案 0 :(得分:-1)
不是在功能分支中合并master,而是可以在其中使用master;当然还有更新的主人:
git checkout feature
git rebase master
在功能结束时,您将其与master --no-ff
选项合并(无快进)以保持分叉:
git checkout master
git merge --no-ff feature
然后你得到类似的东西:
M1 - M2 - M3 M4 - M5 - M6
\ /
F1 - F2 - F3
M4提交将是一个合并提交,如果要删除该功能,可以恢复该提交。