Git合并分支命令:git merge --ff
今天研究了一下git merge命令常用参数,并分别用简单的例子实验了一下,整理如下:
输入git merge -h可以查看相关参数:
--ff 快速合并,这个是默认的参数。如果合并过程出现冲突,Git会显示出冲突等待手动解决或者abort此次merge
--ff-only 只有能快速合并的情况才合并。如果合并过程出现冲突,Git会自动abort此次merge
--no-ff 不使用快速合并。会生成一次新的提交记录,这个记录只是标识在这里进行了一次merge操作
--squash 压缩合并。将待合并的分支的内容压缩成一个新的提交合并进来
接下来举例说明,C代表一次提交,合并时都是将dev分支合并到master。
第一种情况:master分支切出dev分支后没有新的提交,也就是说只有dev分支有更新,可以快速合并:
eg:master:C1 ← C2
↑
dev: C3 ← C4
1.执行:git merge --ff dev
master:C1 ← C2 ← C3 ← C4
dev:C1 ← C2 ← C3 ←C4
查看git log时master分支会看到dev分支上的所有提交,此时master和dev是一样的
2.执行:git merge --ff-only dev
结果同上。
3.执行:git merge --no-ff dev
git会提示让你输入此次合并的信息,然后生成一个特殊的commit。
master:C1 ← C2 ← C3 ← C4 ← C5 (Merge branch 'dev')
dev:C1 ← C2 ← C3 ←C4
4.执行:git merge --squash dev
master:C1 ← C2 ← C5 (Merge branch 'dev')
dev:C1 ← C2 ← C3 ←C4
第二种情况,切出后master和dev分支均有更新,这种情况是最常见的。这里为了演示冲突,在C4和C5分别对一个文件进行了修改。
eg:master:C1 ← C2 ← C4
↑
dev: C3 ← C5
1.执行:git merge --ff dev
这时Git会告诉你产生了冲突并列出冲突的文件,查看文件时会列出具体冲突内容,这时要先解决冲突(如果使用Intellij Idea或Eclipse等工具,可以直接选择use ours/theirs,ours代表被合并分支即master,theirs代表合并分支即dev),然后将这些修改的部分提交,再执行merge操作。
master:C1 ← C2 ← C3 ← C5 ← C4 ← C6 (解决冲突的那次提交)
dev:C1 ← C2 ← C3 ←C5
那么问题来了,Git是如何知道两个文件有冲突呢?下篇文章详细说明。
2.执行:git merge --ff-only dev
这时Git会检测到产生了冲突,所以提示:Not possible to fast-forward, aborting. 即取消这次merge操作。
3.执行:git merge --no-ff dev
结果同1,不过这里在解决了冲突执行commit操作后不用再进行merge操作了。如果再执行merge操作,它会提示:Already up-to-date.
4.执行:git merge --squash dev
master:C1 ← C2 ← C4 ← C6 (解决冲突的那次提交)
dev:C1 ← C2 ← C3 ←C5
这里解决了冲突并提交之后也不用再执行merge操作了。如果再执行merge操作会有两种情况:
a.刚才解决冲突时选用了master分支的修改,那么还是会提示有冲突需要解决。
b.刚才解决冲突时选用了dev分支的修改,那么会提示Already up-to-date。
对比发现,使用--squash参数时,如果有冲突,解决完冲突后只要两个分支不完全一样,再执行git merge --squash时还是会进行merge。但--no-ff就不会。
Git合并分支命令:git merge --ff的更多相关文章
- Git合并分支命令参数详解:git merge --ff
今天研究了一下git merge命令常用参数,并分别用简单的例子实验了一下,整理如下: 输入命令git merge -h可以查看相关参数: --ff 快速合并,这个是默认的参数.如果合并过程出现冲突 ...
- git合并分支理解和常用命令的总结
原文参考:https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 工作区和暂存区 工作区 ...
- git 合并分支到master
git 合并分支到master 假如我们现在在dev分支上,刚开发完项目,执行了下列命令 git add .git commit -m ‘dev'git push -u origin dev 然后 ...
- 用git合并分支时,如何保持某些文件不被合并
用git合并分支时,如何保持某些文件不被合并_fkaking的专栏-CSDN博客_git 合并分支 https://blog.csdn.net/fkaking/article/details/4495 ...
- 【Git版本控制】Git的merge合并分支命令
1.实例 git checkout master git merge dev merge合并分支只对当前分支master产生影响,被合并的分支dev不受影响. 假设你有两个分支,“stable” 和 ...
- git之合并分支(git merge)------(三)
最近几天写小demo,总是自己拉取他人的代码,然后创建分支,在自己的分支上进行修改,然后提交到自己的分支,具体的这一步,我就不多讲了,因为在我的博客“工作中常用的Git操作”中有详细的介绍,今天主要讲 ...
- git 合并分支 git merge branch_name
* 查看分支 git branch * 更新 git pull * 切换到master分支 git checkout master Checking out files: 100% (907/907) ...
- Git合并分支出现的冲突解决
人生不如意之事十有八九,合并分支往往也不是一帆风顺的. 我们准备新的分支newbranch. LV@LV-PC MINGW32 /c/gitskill (master)$ git checkout - ...
- Git合并分支或者冲突
假设冲突文件是 test/TestCase.php 下面分5种情况讨论. 1.本地不变. 然后远程别人有更新. git pull 这种最简单,没有冲突,本地工作区直接更新 2.我本 ...
随机推荐
- CABasicAnimation 基本动画 分类: ios技术 2015-07-16 17:10 132人阅读 评论(0) 收藏
几个可以用来实现热门APP应用PATH中menu效果的几个方法 +(CABasicAnimation *)opacityForever_Animation:(float)time //永久闪烁的动画 ...
- WINDOWS下搭建SVN服务器端的步骤分享(Subversion)
1.获取svn程序 2.安装 Subversion(以下简称SVN)的服务器端和客户端.下载下来的服务器端是个 zip压缩包,直接解压缩即可,比如我解压到 E:\subversion .客户端安装文件 ...
- cocos2d中box2d讲解一
在游戏中我们经常要加入物理碰撞等和物理有关的内容,在游戏中加入物理引擎可以使我们的游戏更加真实,为玩家展示一个更真实的世界,cocos2d-x支持两个物理引擎Box2d和Chipmunk,本文介绍bo ...
- IOS9中联系人对象的使用及增删改查操作的函数封装
之前克服重重困难把IOS9中新的类联系人搞明白了,现在把增删改查封装成了函数,如下: // // ViewController.m // IOS9中联系人CNContact的使用 // // Crea ...
- 4.ICMP协议,ping和Traceroute
1.IMCP协议介绍 前面讲到了,IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成.其中一个重要的模块就是ICMP(网络控制报文)协议. 当传送 ...
- 温故知新 javascript 正则表达式
很长时间没看 正则表达式了,碰巧今天用到,温故知新了一把 看书学习吧 50% 的举一反三练习中的原创. 一 javascript正则表达式的基本知识 1 javascript 正则对象创建 ...
- 笔记整理——linux
linux文件目录介绍 (2015/4/30 19:20:28) /proc 目录中的主要文件的说明 文件或目录名称 描 述 apm 高级电源管理信息 cmdline 这个文 ...
- 1.3. 创建 Grocery Dude 项目(Core Data 应用程序实践指南)
该程序功能如下: 分类显示家里各个位置的东西,以此提示该购买哪些生活用品 在超市购买时,告诉某个货品摆在哪条过道旁的货架上 将待买物品按过道编组,这样每个过道只需走一遍,就可以拿完所需货品 通过iCl ...
- 安卓版php服务器的mysql数据库增删改查简单案例
界面: index.php文件: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "h ...
- 淘宝的数据库拆分(TDDL)(转)
淘宝的数据拆分历程 系 统刚开始的时候,因为系统刚上线,用户不多,那个时候,所有的数据都放在了同一个数据库中,这个时候因为用户少压力小,一个数据库完全可以应付的了,但是 随着运营那些哥们辛苦的呐喊和拼 ...