git config pull.rebase false与pull.ff true的区别及选型建议
Git
pull.rebase false 与 pull.ff true 的区别及选择 二者的核心区别
这两个配置定位不同,作用场景存在细微差异:
git config pull.rebase false:这是Git的默认配置,核心是指定pull操作采用merge策略(而非rebase)。此时merge环节的快进行为会遵循全局的merge.ff配置(默认值为true,即能快进就快进,无法快进时创建合并提交)。git config pull.ff true:这个配置是专门针对pull操作中的merge环节,强制启用「快进优先」规则——不管全局merge.ff是什么设置,只要pull用的是merge策略,就优先执行快进;只有当本地分支和远程分支存在分叉提交时,才会创建合并提交。
简单来说:如果全局merge.ff是默认的true,单独设置这两个配置的效果几乎一致;但如果全局merge.ff被改成了false(强制创建合并提交,哪怕能快进),两者的行为就会出现差异:
- 仅设置
pull.rebase false时,pull会遵循merge.ff false的规则,哪怕能快进也会生成合并提交; - 仅设置
pull.ff true时,pull会忽略全局配置,优先执行快进,无法快进时再合并。
配置选择建议
- 如果你只是想保持pull的默认合并逻辑,且希望能快进时一定快进,直接用默认的
pull.rebase false即可——因为全局merge.ff默认就是true,完全满足需求。 - 如果你所在环境的全局
merge.ff被修改过,或者想明确强制pull操作优先快进,可以设置pull.ff true(无需额外设置pull.rebase false,因为它本来就是默认值)。 - 若团队要求线性提交历史,那应该考虑
pull.rebase true的配置,但这属于另一种协作场景,和当前的merge策略无关。
内容的提问来源于stack exchange,提问作者Alisher Baigazin
相关产品推荐
相关产品推荐

