Git版本控制系列:创建分支和分支合并

0x00 前言

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

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

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

Git版本:git version 2.23.0.windows.1

0x01 git branch、git chekout以及git merge

在软件开发的过程中,可能会存在多人同时对软件进行编程开发或修改,这样则会导致最后出现多个版本的情况,造成版本管理混乱,所以这时候就需要分支管理了。分支( branches ) 就是在软件的开发或修改记录的整体流程(主线)上进行分叉,可以根据需求有多个分叉,在对分叉后的分支进行操作不会影响到其它分支,当然在分支上开发修改完成之后可以再合回到主线,这样的好处除了可以便于提高开发效率之外,还有就是可以保证主线代码的完整性和可用性,保障主线代码是稳定代码。
在这里插入图片描述
使用Git进行版本控制的典型工作流程,注意看它的分支使用情况
(源自https://arcadsoftware.com/news-events/blog/what-is-source-code-management/

对于分支的创建和合并,我们一般会用到git branchgit checkoutgit merge命令。git branch命令用于列出,创建或删除分支;git checkout命令用于切换分支或恢复工作区文件;git merge命令用于将两个或两个以上的版本合并一起 ;需要注意的是,这三个命令其后加的参数不同,所表达意义也不同。比如git checkout -- hello.c意思是将暂存区文件hello.c恢复到工作区内,git checkout master意思是将当前HEAD指针指向master主线上。

0x02 创建分支以及分支合并举例

在git初始化(git init)后,新建一个readme.txt文件(注意readme.txt是在工作区),在文件中添加内容,并提交到暂存区(git add readme.txt)最后提交到版本库(git commit -m "第一次提交"):
在这里插入图片描述
现在我们在readme.txt修改第4行“Version 2”并继续提交以及“Version 3”并继续提交后,所以当前工作区、暂存区、版本库中中最新的readme.txt内容应该是:
在这里插入图片描述
此时我们可以画一个readme.txt版本提交历史的示意图:
在这里插入图片描述

当前HEAD以及master指针指向“第三次提交”(即“This is version 3”的readme.txt)版本。所以,每次的版本提交,master主线都会向前移动一步,随着不断提交新版本,masterd主线也会越来越长。

我们现在开始创建分支,分支的名称定为“dev”,则使用指令:git branch dev,然后让HEAD指针转到该dev分支:git checkout dev,然后使用git branch查看当前HEAD指针定位位置(或者使用git checkout -b dev直接创建并指向dev分支):
在这里插入图片描述
可以看到HEAD已经指向了dev分支,在示意图中显示为:
在这里插入图片描述
现在就可以在dev分支上进行修改和提交了,我们对readme.txt进行修改,在第五行增加“dev OK“:
在这里插入图片描述
然后提交到暂存区(git add readme.txt)再提交到版本库(git commit -m "dev第一次提交")中,此时的HEAD指针位置如下所示:
在这里插入图片描述
提交完成之后,我们切换到master主线分支上(git checkout master),然后我们再查看一下readme.txt文件,发现内容仍为第三次提交版本,没有改变:
在这里插入图片描述
这是因为那个添加“dev OK”的那个提交是在dev分支上,所以我们的master主线分支此时的提交点没有变化,所以readme.txt也没有改动:
在这里插入图片描述
现在我们想要将dev分支的内容合并到主线分支上,使用git merge <分支名>命令来进行合并dev:git merge dev
在这里插入图片描述
合并时出现的Fast-forward意思是合并的方式为“快进模式”,即将master指向dev分支上的最新提交:
在这里插入图片描述
需要注意的是,合并的方式有很多种,在这里选择了“快进模式”。

当我们合并之后,dev分支对于我们就没有用处了,此时我们可以使用git branch -d <分支名>来删除dev分支:git branch -d dev
在这里插入图片描述
在这里插入图片描述
以上。

参考文档:
1.https://www.cnblogs.com/chenweichu/articles/5851876.html
2.https://www.liaoxuefeng.com/wiki/896043488029600/900003767775424
3.https://git-scm.com/book/zh/v2/Git-%E5%88%86%E6%94%AF-%E5%88%86%E6%94%AF%E7%9A%84%E6%96%B0%E5%BB%BA%E4%B8%8E%E5%90%88%E5%B9%B6

  • 6
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值