Git版本控制系列:使用git merge --no-ff合并分支

0x00 前言

文章中的文字可能存在语法错误以及标点错误,请谅解;

如果在文章中发现代码错误或其它问题请告知,感谢!

演示运行系统环境:Windows 10 家庭中文版, 64位

Git版本:git version 2.23.0.windows.1

0x01 git merge 和 git merge --no-ff

git mergegit merge --no-ff都是合并分支,但是意义稍有不一样。git merge也可以写成git merge --ff,其中参数--ff意为fast-forward。该命令指的是把HEAD指针指向要合并分支的头,完成一次合并。git merge --no-ff中的--no-ff意为强行关掉fast-forward,所以在使用这种方式后,分支合并后会生成一个新的commit,这样,在使用git log从提交历史上就可以看到分支信息。
本文内容着重讲解git merge --no-ff合并分支,关于使用git merge合并分支的讲解可以参看我上一篇文档:
https://blog.csdn.net/wangqingchuan92/article/details/103078680

0x03 git merge --no-ff合并分支举例

在git初始化(git init)后,新建一个readme.txt文件(注意readme.txt是在工作区),在文件中添加内容,并提交到暂存区(git add readme.txt)最后提交到版本库(git commit -m "第一次提交"):
在这里插入图片描述
现在我们在readme.txt修改第4行“Version 2”并继续提交以及“Version 3”并继续提交后,所以当前工作区、暂存区、版本库中中最新的readme.txt内容应该是:
在这里插入图片描述
git版本提交历史如下:
在这里插入图片描述
现在我们可以画一个readme.txt版本提交历史的示意图:
在这里插入图片描述
此时我们可以创建分支,分支名称为“dev”,然后将HEAD指针指向该分支,可以使用一条指令完成:git checkout -b dev
在这里插入图片描述
可以看到HEAD已经指向了dev分支,在示意图中的显示为:
在这里插入图片描述
现在就可以在dev分支上进行修改和提交了,我们对readme.txt进行修改,在第五行增加“dev OK“:
在这里插入图片描述
然后提交到暂存区(git add readme.txt)再提交到版本库(git commit -m "dev第一次提交")中,此时的HEAD指针位置如下所示:
在这里插入图片描述
在提交完成之后,我们将HEAD指针移动到mater主线分支(git checkout master),此时查看readme.txt,可以发现这是第三次提交的版本:
在这里插入图片描述
这是因为那个添加“dev OK”的那个提交是在dev分支上,所以我们的master主线分支此时的提交点没有变化,所以readme.txt也没有改动:
在这里插入图片描述
此时,我们想要将dev分支合并到master主线分支上(注意HEAD现在指向的是master),而且想要保存之前的分支历史,则使用git merge --no-ff来合并,使用该命令合并时会创建一个新的commit,所以加上-m参数,把commit描述写进去:git merge --no-ff -m "merge with no ff" dev:

在这里插入图片描述
现在用git log --graph --pretty=oneline --abbrev-commit查看提交历史:
在这里插入图片描述
在示意图中的显示为:
在这里插入图片描述

以上。

参考文档:
1.https://segmentfault.com/q/1010000002477106
2.https://www.liaoxuefeng.com/wiki/896043488029600/900005860592480
3.https://blog.csdn.net/wangqingchuan92/article/details/103078680

  • 14
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值