禁止使用快进模式 no-fast—forward

$ git merge --no-ff -m "merge with no-ff" dev

在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数:

$ git checkout develop
$ git merge --no-ff feature

–no-ff 在这的作用是禁止快进式合并。
Git 合并两个分支时,如果顺着一个分支走下去可以到达另一个分支的话,那么 Git 在合并两者时,只会简单地把指针右移,叫做“快进”(fast-forward),比如下图:

注意:::这种是master没有前进的情况,所以会这样,如果master也前进了,则可以不用这个,但是为了保险起见,嘚使用–no-ff

         A---B---C feature/
D---E---F master

要把 feature 合并到 master 中,执行以下命令

$ git checkout master
$ git merge feature

结果就会变成

          A---B---C feature/         master
D---E---F

因为 feature 就在 master 的下游,所以直接移动了 master 的指针,master 和 feature 都指向了 C。而如果执行了 git merge --no-ff feature 的话,是下面的结果:

          A---B---C feature/         \
D---E---F-----------G master

由于 --no-ff 禁止了快进,所以会生成一个新的提交,master 指向 G。

从合并后的代码来看,结果其实是一样的,区别就在于 --no-ff 会让 Git 生成一个新的提交对象。为什么要这样?通常我们把 master 作为主分支,上面存放的都是比较稳定的代码,提交频率也很低,而 feature 是用来开发特性的,上面会存在许多零碎的提交,快进式合并会把 feature 的提交历史混入到 master 中,搅乱 master 的提交历史。所以如果你根本不在意提交历史,也不爱管 master 干不干净,那么 --no-ff 其实没什么用。不过,如果某一次 master 出现了问题,你需要回退到上个版本的时候,比如上例,你就会发现退一个版本到了 B,而不是想要的 F,因为 feature 的历史合并进了 master 里。

git merge之--no-ff 的作用相关推荐

  1. 4. git merge简介,以及git merge的参数–ff、–no-ff和–squash的区别?

    1.git merge原理 A---B---C topic/ \D---E-----F------H master 在master分支中使用git merge topic,只会将C和H中的文件进行比较 ...

  2. git merge 合并时 --no-ff 的作用——主要影响版本回退(好文章!)

    在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数: $ git checkout develop$ git merge --no-ff feature --no-f ...

  3. git merge和git merge --no-ff有什么区别?

    本文翻译自:What is the difference between `git merge` and `git merge --no-ff`? Using gitk log , I could n ...

  4. Git:git-merge的--ff和--no-ff

    博客 Git用法总结系列收藏于IT老兵驿站. Git:Git-merge的–ff和–no-ff. 前言 Git merge最容易糊涂的地方就是这个--ff参数和--no-ff 参数,通过本文,把这个整 ...

  5. Git merge时使用--no-ff参数

    /1.Git:Git-merge的–ff和–no-ff. 前言 Git merge最容易糊涂的地方就是这个--ff参数和--no-ff 参数,通过本文,把这个整理清楚. 其实官网讲的非常清楚,不过可能 ...

  6. git merge 回退_Git项目开发必备命令

    前言 Github:https://github.com/HealerJean 博客:http://blog.healerjean.com 1.开发常备 1.0.本地直接创建仓库 git init / ...

  7. git merge用法_Git 基本命令 merge 和 rebase,你真的了解吗?

    前言 Git 中的分支合并是一个常见的使用场景. 仓库的 bugfix 分支修复完 bug 之后,要回合到主干分支,这时候两个分支需要合并: 远端仓库的分支 A 有其他小伙伴合入了代码,这时候,你需要 ...

  8. 是否有“他们的”版本的“git merge -s ours”?

    当使用git merge将主题分支"B"合并到"A"时,我会遇到一些冲突. 我知道使用"B"中的版本可以解决所有冲突. 我知道git mer ...

  9. git merge 回退_git+vscode进行版本控制

    Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.Git 与 SVN,CVS等其它版本控制系统最核心的区别:Git 是分布式的 首先在官网上下载:https://git- ...

最新文章

  1. 疯狂位图之——位图实现12GB无重复大整数集排序
  2. 【大会】没有什么比把码率降低更爽的了
  3. MFC消息详解 (WindowProc|OnCommand|OnNotify)
  4. Effective Java~26. 不要使用 raw type
  5. Word2vec原理浅析及tensorflow实现
  6. java map hashtable_Java的HashMap和HashTable
  7. mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...
  8. 杭电1863畅通工程
  9. Vuepress2.X从0-1保姆级入门教程
  10. ps补充图像缺失部位
  11. 16位深度图像转8位灰度
  12. PHP 中的 use function是什么意思
  13. Linux代理服务器 Centos Nginx安装、反向代理配置、Nginx开机自启动及日志每天自动分割压缩
  14. 开放式蓝牙耳机排行,列举几款值得推荐的开放式蓝牙耳机
  15. 基于python-opencv的图像中截取多边形区域
  16. 声表面波传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  17. 网络工程师——Super VLAN
  18. Vue 组件封装之 ScrollView 上拉加载更多
  19. Total Command快捷键大全
  20. 回应:“MJ广东开校之我见”

热门文章

  1. 【日常】python站长素材网免费模板下载(以PPT模板为例)
  2. 自己搭建一个语音聊天室
  3. 喜大普奔,知了堂4月信安预科班顺利开课!
  4. springboot+editormd上传图片(超详细,如果有问题可留言,会及时回复哦)
  5. Unity | 实现隐藏窗口到托盘,并且任务栏不显示icon
  6. laravel rbac权限管理系统
  7. 安卓启动中的PARTUUID
  8. 详细了解一下铝型材挤压原理
  9. Unity ECS(四)ECS组成概念
  10. Python爬虫学习,批量爬取下载抖音视频