Git -> git merge --no-ff 和 git merge的区别

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创建分支的共同起点,而不是BD是同一笔提交。

相关推荐
宁静的舞者2 小时前
Git、GitHub、Codeup(云效代码仓库)详解
git·代码仓库·codeup·云效
陈佬昔没带相机3 小时前
Git Worktree: AI 编程 Agent 并行开发的秘密武器
git·agent
栈时没有名字9 小时前
git仓库管理,commit或push上传服务器失败问题
git·嵌入式
金銀銅鐵9 小时前
[git] 如何丢弃对一个文件的改动?
git·后端
JAVA面经实录91713 小时前
Java开发工程基础完整手册(企业实战完整版)
java·开发语言·git·ci/cd·svn·github·intellij idea
草履虫君15 小时前
若用wsL方式安装openclaw 就不需要安装win原生的node和git
经验分享·git·ai
手握风云-15 小时前
深入 Git:它是如何记录世界的(一)
git
华科大胡子15 小时前
Git Submodule深度避坑指南
git
花开花落为谁愁17 小时前
Git核心命令速查表
大数据·git·elasticsearch
雨声不在17 小时前
家用小GIT
git