[Git] 以非快进方式合并分支来保留合并记录

陪她去流浪 桃子 2018年08月19日 编辑 阅读次数:3842

快进式合并

git 中,分支合并时,如果能够采用**快进(fast-forward, ff)**方式合并,则会直接以快进方式合并,否则将产生一个新的合并提交。

比如下面的例子:

       F1---F2---  feature
      /
M1---M2----------  master

feature分支是从masterM2切出来的。之后 feature 产生了 2 个提交,master 没有提交。

此时,我在 master 分支下。如果我采用以下的命令进行 feature 到 master 的合并:

$ git merge feature

由于 master 上面没有新的提交,所以能够进行快进合并,合并后的分支如下:

M1---M2---F1---F2---  master/feature

也就是,master 和 feature 在同一个位置。master 直接快进到 feature 到了。

非快进式合并

如果我们想保存合并历史记录,像下面这样,强制在 master 上产生一个新的合并提交:

       F1---F2---feature
      /       \
M1---M2--------MC---  master

其中的MC就是强制产生出的新合并。应该怎样做?不快进合并即可。

在 merge 的时候指定--no-ff,即可以非快进方式合并,达到上面的结果。

$ git merge --no-ff feature

此时再考虑删除 feature 分支,在 feature 分支的历史合并记录就被完整地记录下来了。

参考

标签:git