全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-11 6 分钟 ✍️ juanwangdev

git merge --no-ff 禁用快进

--no-ff(no fast-forward)禁止快进合并,强制创建合并提交。

基本用法

Bash
# 禁用快进合并
git merge --no-ff <branch>

# 禁用快进并指定提交信息
git merge --no-ff -m "合并功能分支" <branch>

快进 vs --no-ff

Bash
快进合并(默认):
main: A → B → C → D → E
                  ↑
      (指针直接移动)

--no-ff 合并:
main: A → B → C → M
                ↗
feature:   D → E
      (创建合并提交)

使用示例

Bash
# 合并功能分支(禁用快进)
git checkout main
git merge --no-ff feature/login

# 输出
Merge made by the 'recursive' strategy.
 src/login.go | 50 +++++++++++++++++++++++++++++++
 1 file changed, 50 insertions(+)
 create mode 100644 src/login.go

为什么要用 --no-ff

优点说明
保留分支历史清晰看到功能分支的存在
易于追溯知道某功能在哪次合并引入
易于回滚整个功能可以一次性撤销
团队协作多人开发历史更清晰

--no-ff 适用场景

场景原因
功能分支合并保留功能开发历史
团队项目清晰展示协作过程
长期分支保持历史可追溯
发布版本标记重要合并点

对比表

特性快进合并--no-ff
合并提交
分支历史隐藏保留
回滚难度困难简单
历史可读性线性简洁结构清晰

查看合并历史

Bash
# 图形化显示分支历史
git log --oneline --graph --all

# --no-ff 后的输出
*   abc123 (HEAD -> main) Merge feature/login
|\
| * def456 (feature/login) 添加登录功能
|/
* ghi789 初始化项目

配置默认禁用快进

text
# 对特定分支设置
git config branch.main.mergeoptions "--no-ff"

# 全局设置(不推荐)
git config --global merge.ff false

功能分支合并推荐使用 --no-ff,保持历史清晰可追溯。

要点总结

  1. --no-ff 强制创建合并提交
  2. 保留分支历史,便于追溯
  3. 功能分支合并推荐使用
  4. 回滚整个功能更方便
  5. 团队项目历史更清晰

📝 发现内容有误?点击此处直接编辑

← 上一篇 git cherry-pick 挑选提交
下一篇 → git rebase 变基操作
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库