git feature branch:rebase -i或merge --no-ff?

时间:2013-09-27 18:04:11

标签: git

许多git工作流主张执行 git merge --no-ff 将功能分支引入主线。我个人更喜欢 git rebase -i 我的功能分支到一个干净的提交,然后做一个简单的git合并。

使用rebase -i是否有任何缺点,而不是使用merge --no-ff进行功能分支?

1 个答案:

答案 0 :(得分:1)

使用 merge --no-ff ,创建一个新的提交,其中包含合并分支的每个HEAD(最后一次提交)作为父项,在您的情况下:最后一次提交“主线”和最后一次提交提交“功能”分支。这将使git记住“功能”分支历史记录是合并提交历史记录的一部分。

merge的历史记录,合并的提交*将两个分支HEAD作为父级:

mainline  ---------*
                  /
feature   -------/

使用 rebase -i ,新提交不会在重新提交的提交的父项列表中包含“功能”分支的HEAD,因此存储库将无法跟踪提交的以前的历史。

rebase的历史记录,重新定位的提交*只有一个“主线”HEAD作为父级:

mainline  --------*

feature   --------

请记住,没有引用的提交会收集垃圾。如果使用“rebase -i”,则不会创建引用(因为它不包含在rebase提交中作为父级),如果“feature”分支被删除,那么该历史记录最终将被修剪(完全如果您的存储库周围没有其他引用,则由垃圾收集器删除。