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是同一笔提交。

相关推荐
flow_code3 小时前
切换git账户
git
春生野草7 小时前
Gituee
git·gitee
222you7 小时前
Git推送本地仓库到远程
git
小贾要学习9 小时前
如何在Linux操作系统环境下使用git命令提交文件到远程仓库
linux·运维·git
J2虾虾9 小时前
WebStorm的项目绑定Git并上传到gitee
git·gitee·webstorm
虾说羊9 小时前
git分支管理介绍和stash命令
git
71-311 小时前
git 和 tortoisegit的快速使用教学(上传至gitee或GitHub)
git·gitee
唐青枫16 小时前
为什么 .gitignore 不生效?其实你忘了用 git rm --cached!
git
代码or搬砖1 天前
Git学习笔记(三)
笔记·git·学习
虾说羊2 天前
git连接远程仓库并拉去推送以及克隆命令
git