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.我本 ...
随机推荐
- Redis数据备份和重启恢复
一.对Redis持久化的探讨与理解 目前Redis持久化的方式有两种: RDB 和 AOF 首先,我们应该明确持久化的数据有什么用,答案是用于重启后的数据恢复. Redis是一个内存数据库,无论是RD ...
- 一元线性回归分析及java实现
http://blog.csdn.net/hwwn2009/article/details/38414911 一元线性回归分析及java实现 2014-08-07 11:02 1072人阅读 评论(0 ...
- EHCache分布式缓存集群环境配置
EHCache分布式缓存集群环境配置 ehcache提供三种网络连接策略来实现集群,rmi,jgroup还有jms.同时ehcache可以可以实现多播的方式实现集群,也可以手动指定集群主机序列实现集群 ...
- ucos内存管理原理详解
应用程序中为了某种特殊需要,经常需要动态的分配内存,而操作系统的特质置一,就是能不能保证动态内存分配的时效性,也就是说分配时间是可确定的 Ucos提供内存分配功能,它将内存空间分为两级管理,将一块连续 ...
- git 常用命令--Linus Torvalds
1.git log 显示仓库的历史记录,默认显示所有记录, 1)git log -m,显示最近的几次提交,, 2)git log --pretty=oneline 显示提交hash和注释 -p 按补 ...
- Unity3D ——强大的跨平台3D游戏开发工具(六)
第十一章 制作炮台的旋转 大家知道,炮台需要向四周不同的角度发射炮弹,这就需要我们将炮台设置成为会旋转的物体,接下来我们就一起制作一个会旋转的炮台. 第一步:给炮台的炮筒添加旋转函数. 给炮台的炮筒部 ...
- Hibernate中sessionfactory和session的多线程问题
http://blog.sina.com.cn/s/blog_7ffb8dd5010146i3.html
- bzoj3052
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3052 题目大意:自己看看,懒得写 题解:带修改的树上莫队,经典爆评测机的题 代码: #inc ...
- UVa 10706 - Number Sequence
题目大意:Sk表示从1到k的字符序列,如S4为1234,现如今有如下的序列S1S2...Sk,形如1 12 123 1234这样的序列,给一个数n,让你去这个序列第n个位置上的数字. 可以构建出一个S ...
- Jquery知识小点备注
jQuery siblings() 方法返回被选元素的所有同胞元素,并且可以使用可选参数来过滤对同胞元素的搜索. 实例演示:点击某个li标签后将其设置为红色,而其所有同胞元素去除红色样式 创建Html ...