git merge --no-ff <branch>
与 git merge <branch>
的区别
核心区别
git merge <branch>
:
- 默认使用
Fast-forward
模式(若可行) - 不创建额外的合并提交记录
- 合并后看不出曾经存在过分支
git merge --no-ff <branch>
: - 强制创建一个新的合并提交
- 即使可以
Fast-forward
也会生成合并记录 - 保留完整的分支历史信息
合并前 (两种方式相同的初始状态)
bash
A---B---C (master)
\
D---E (branch)
Fast-forward
模式合并后 (git merge
)
bash
A---B---C---D---E (master)
No Fast-forward
模式合并后 (git merge --no-ff
)
bash
A---B---C-------M (master)
\ /
D---------E
选择建议: 临时分支用默认模式,重要功能分支用--no-ff
以保留历史。
注:图中A、B、C、D、E
分别代表不同的提交。B
是从A
创建分支的共同起点,而不是B
和D
是同一笔提交。