合并长期功能分支和主分支的策略是什么?

时间:2016-09-01 17:10:24

标签: git merge

例如,长期功能分支可能会持续两周以上。在此期间,许多其他功能/错误修复分支可能会合并到主分支上。

有时长期功能分支需要这些分支,例如分支修复阻塞致命错误。

所以我尝试每两天将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'生成的提交,但我觉得这不好。

那么合并主要和长期功能分支的最佳方法是什么?

1 个答案:

答案 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提交将是一个合并提交,如果要删除该功能,可以恢复该提交。