
目录
1.理解分支
本章开始介绍 Git 的杀手级功能之一(注意是之一,也就是后⾯还有之二,之三……):分支。分支就是科幻电影里面的平行宇宙,当你正在电脑前努力学习 C++ 的时候,另一个你正在另一个平行宇宙⾥努力学习 JAVA。
如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,结果,你既学会了 C++ 又学会了 JAVA!
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就可以理解为是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即 master 分支。
再来理解⼀下HEAD,HEAD 严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD 指向的就是当前分支。
那么分支在git仓库里面是如何体现出来的呢?
其中间的关系就是
HEAD指向master
master指向最新一次的提交
我们的git的所有提交可以串成一条线,这个提交时间线就相当于我们的分支
2.创建分支
在创建分支之前,我们先来看看我们仓库是有哪些分支存在的
我们可以使用branch命令,他是可以显示出我们当前仓库有哪些分支的
这里可以看到我们有且只有一个分支,那就是master分支
在我们创建git仓库的时候,master分支就会默认创建
在这里我们解释一下我们之前讲过的HEAD指针
不是一直讲的都是HEAD指针指向master指针吗?
HEAD指针其实可以指向其它分支的,被指向的分支就是当前正在工作的分支
就是因为我们只有master分支所以HEAD只能指向master
我们接下来来创建我们的第一个分支
我们使用
git branch dev
就可以创建一个dev分支出来了
当我们创建新的分支后,Git 新建了⼀个指针叫 dev, * 表示当前 HEAD 指向的分支是 master 分支。
我们再来看一下git目录下的文件
我们会发现git里refs文件下heads里不在只有我们的master文件了,还有我们新创建的dev
另外,可以通过目录结构发现,新的 dev 分支:
发现目前 dev 和 master 指向同一个修改。并且也可以验证下 HEAD 目前是指向 master 的。
用图来帮忙我们理解:
3.切换分支
我们想要在我们的dev上操作,那我们就需要把我们的HEAD指向dev,这样才能把dev变成我们的当前的工作分支
那么我们如何做呢?
使用 git checkout 命令即可完成切换,⽰例如下:
我们来验证一下我们的HEAD指针
我们发现 HEAD 已经