git merge之--no-ff 的作用
禁止使用快进模式 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 的作用相关推荐
- 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中的文件进行比较 ...
- git merge 合并时 --no-ff 的作用——主要影响版本回退(好文章!)
在许多介绍 Git 工作流的文章里,都会推荐在合并分支时,加上 --no-ff 参数: $ git checkout develop$ git merge --no-ff feature --no-f ...
- git merge和git merge --no-ff有什么区别?
本文翻译自:What is the difference between `git merge` and `git merge --no-ff`? Using gitk log , I could n ...
- Git:git-merge的--ff和--no-ff
博客 Git用法总结系列收藏于IT老兵驿站. Git:Git-merge的–ff和–no-ff. 前言 Git merge最容易糊涂的地方就是这个--ff参数和--no-ff 参数,通过本文,把这个整 ...
- Git merge时使用--no-ff参数
/1.Git:Git-merge的–ff和–no-ff. 前言 Git merge最容易糊涂的地方就是这个--ff参数和--no-ff 参数,通过本文,把这个整理清楚. 其实官网讲的非常清楚,不过可能 ...
- git merge 回退_Git项目开发必备命令
前言 Github:https://github.com/HealerJean 博客:http://blog.healerjean.com 1.开发常备 1.0.本地直接创建仓库 git init / ...
- git merge用法_Git 基本命令 merge 和 rebase,你真的了解吗?
前言 Git 中的分支合并是一个常见的使用场景. 仓库的 bugfix 分支修复完 bug 之后,要回合到主干分支,这时候两个分支需要合并: 远端仓库的分支 A 有其他小伙伴合入了代码,这时候,你需要 ...
- 是否有“他们的”版本的“git merge -s ours”?
当使用git merge将主题分支"B"合并到"A"时,我会遇到一些冲突. 我知道使用"B"中的版本可以解决所有冲突. 我知道git mer ...
- git merge 回退_git+vscode进行版本控制
Git 不仅仅是个版本控制系统,它也是个内容管理系统(CMS),工作管理系统等.Git 与 SVN,CVS等其它版本控制系统最核心的区别:Git 是分布式的 首先在官网上下载:https://git- ...
最新文章
- 疯狂位图之——位图实现12GB无重复大整数集排序
- 【大会】没有什么比把码率降低更爽的了
- MFC消息详解 (WindowProc|OnCommand|OnNotify)
- Effective Java~26. 不要使用 raw type
- Word2vec原理浅析及tensorflow实现
- java map hashtable_Java的HashMap和HashTable
- mysql一样的查询在我本地很快但是线上很慢_MySQL大数据量分页查询方法及其优化...
- 杭电1863畅通工程
- Vuepress2.X从0-1保姆级入门教程
- ps补充图像缺失部位
- 16位深度图像转8位灰度
- PHP 中的 use function是什么意思
- Linux代理服务器 Centos Nginx安装、反向代理配置、Nginx开机自启动及日志每天自动分割压缩
- 开放式蓝牙耳机排行,列举几款值得推荐的开放式蓝牙耳机
- 基于python-opencv的图像中截取多边形区域
- 声表面波传感器的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 网络工程师——Super VLAN
- Vue 组件封装之 ScrollView 上拉加载更多
- Total Command快捷键大全
- 回应:“MJ广东开校之我见”