git merge --no-ff 与 git merge --ff-only 的区别

--ff-only

git merge --ff-only codex/new-branch

仅允许快进合并:直接移动当前分支指针,不创建合并提交。

A──B──C

如果两个分支已经分叉,合并会失败。

适合:保持线性的提交历史。

--no-ff

git merge --no-ff codex/new-branch

即使可以快进,也会创建一个新的合并提交。

A──B────M
    \  /
     C

适合:保留功能分支的完整合并记录。

总结

  • --ff-only:能快进就合并,否则停止,不创建合并提交。
  • --no-ff:通过合并提交保留分支边界。