文章首发于公众号:小满只想睡觉;欢迎关注,可以第一时间收到文章更新哦
分支模型是Git的必杀技,也是Git最强大的地方,掌握Git分支的使用,也就是学到Git的精髓。
Git分支的本质
分支的本质就是一个引用(指针),是对提交(commit)的引用。
Git会使用SHA-1
哈希算法给每次提交生成一个40位个哈希值(commit id
),如下所示,这个值是唯一的,只要我们修改文件再提交,产生的commit id
都不一样:
1bcb7ac5ac6444c1fd360345fba553b51021d53b
复制代码
每次的commit
都包含一个指向前一个commit
的指针,这些commit
连起来就是一条我们提交的时间线了。
分支就是指向某个commit
的指针,不同分叉代表不同的分支走向,不同分支也可以指向同一个commit
,如下图所示:
Git
仓库还有个叫HEAD
的指针,HEAD
指向当前工作区所在的分支,当我们切换分支时,HEAD
就会指向我们所切换的分支,比如在下面的示意图中,我们把分支从master
切换到develop
,HEAD
也随之改变。
分支的基本操作
为了更好地学习Git分支的知识,在这篇文章中,我们以一个从零开始的项目来详细讲解Git分支的使用。
初始化仓库
首先初始化一个空的仓库,命令如下:
$ git init demo
复制代码
创建好项目并初始化仓库后,Git
默认会帮我们创建一个名为master
,如果你是通过命令行来操作的,应该可以看到类似下面图片的命令行提示符:
创建仓库
现在我们开始在master
分支上添加文件,并提交我们的修改:
# 创建文件
$ echo "Hello Git!" > hello.html
# 添加到暂存区
$ git add hello.html
# 提交修改
$ git commit -m 'new file hello.html'
复制代码
执行git commit
命令后,产生了一个commit记录,master分支指该commit,此时分支状态如下图所示:
当然,我们也可以多commit几次,假设我们再多提交两次,那么此时master
分支指向最新的commit,分支状态如下图所示:
创建分支
Git的分支管理功能命令为:git branch
。
现在假设我们要在项目中开发一个新功能,按正常开发流程,我们需要基于master
分支创建一个新的功能分支,在git branch
命令后直接跟上分支名即可:
$ git branch feature/1
复制代码
执行后,我们就创建了一个名为feature/1
的分支。
切换分支
不过,在创建分支后,Git并没有帮我们切换到feature/1
上,切换分支的命令为git checkout
:
$ git checkout feature/1
复制代码
git checkout
也可以在分支不存在时,直接创建并切换,只要跟上-b
选项即可&