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 branch
、 git checkout
和git 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