您的位置:

Note about Fast-Forwards

一、FF是什么

Fast-Forward(简称FF)是指某个分支可以直接快进到另一个分支的某个状态,直接使得两个分支达成了一致。

在Git中,一般会用到两个命令来完成FF的过程,分别是“git merge”和“git rebase”。

举个例子,如果现在有一个分支A,另外有一个分支B,而且B只是在A的基础上提交了一些新的修改,我们现在需要将B的修改合并到A中,这个时候,通过FF的方式,我们可以让A直接快进到B的状态,而不需要执行一次完整的合并操作。

二、FF的优点

1、快速合并:如果合并过程可以直接快进,那么它的执行速度就会非常快速,而且不需要进行额外的操作,从而使得工作效率大大提高。

2、视觉效果:如果在分支合并过程中,可以使用FF将两个分支状态合并,那么整个合并过程会非常干净整洁,可以更容易地看出分支以及提交历史的情况。

三、FF的限制

虽然FF有很多优点,但是它的使用也是有一些限制的,主要有如下几个方面:

1、需要有共同的提交祖先:FF只能用在有共同提交祖先的分支上,如果两个分支的最近公共祖先是另外一个分支或者提交,那么就无法使用FF进行快速合并。

2、不能保留分支历史:如果使用FF进行分支合并,那么就无法保留合并之前的提交历史,因为执行FF操作后,两个分支就完全一致了。

3、存在冲突时无法使用:如果两个分支存在冲突,那么就无法使用FF进行快速合并,必须执行一次完整的合并操作。

四、git merge和git rebase的FF使用

1、git merge的FF使用


$ git checkout dev
$ git merge feature-A

上述命令执行后,只有当feature-A分支可以使用FF合并到dev分支时,才会使用FF进行分支合并,并且会显示如下信息:


Updating 1373abc..d42aea3
Fast-forward
test.txt | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)

如果feature-A分支无法使用FF进行快速合并,那么就会自动执行一次合并操作。

2、git rebase的FF使用


$ git checkout feature-B
$ git rebase master

上述命令执行后,如果feature-B分支可以使用FF合并的方式,那么就会直接使用FF进行分支合并操作。