这是我参与「第四届青训营 」笔记创作活动的第2天
上期引入了git的分支,初步学习了git分支的意义,属于理解层面。当我们知道一件事物比较重要的时候才会有毅力去钻研,用未来的憧憬打败学习时可能出现的枯燥乏味。
这篇文章将从实操层面来学习一下git的分支,并且结合一些内在逻辑来加深对git分支的理解。
分支指针
git分支是一条独立与主分支的时间线,那么是不是每次创建分支或者进行其他分支操作的时候,都要从头初始化所有的仓库数据,加载对应时间线的代码呢?
显然这样很浪费时间和计算机性能
git用的是指针来完成这一操作。为了更好地理解指针和git分支的创建与合并,我们引用一些廖雪峰的教程内容,因为个人感觉他讲的还是比较通俗易懂又详细的。
按照上一篇笔记的理解,一个分支是一个时间线,主分支master是一条线
用master指针指向主分支最新一次的提交,然后我们当前所在的“时空”用head来指向,例如此时head指向master,那么就确定了我们当前在主分支“时空”的最近的“时间段”,也就是主分支最新版本。
当我们提交新的代码时,主分支会再向前走一步,master也随即指向新的“时间段”
当我们创建了新的分支,就好比创建了新的平行宇宙,为了方便讲解,我们下面把这个时空命名为“dev”。创建时,git新建了一个指针dev,指向master指的提交(也就是master指向的时间段),这个时候我们的head转而指向了dev,意味着我们切换时空了,我们以及来到了平行宇宙dev。
此后若是在这个时空提交代码,电脑就会执行如同上面master一样的操作,让dev指向新的提交。
这样一条全新的时间线就发展出来了
个人感觉廖雪峰的图可以更好一些,把红的线往斜上方指,来突出这是不同的路,不同的时间线,这样更加易懂。
比如这样。要不是我画的丑我也可以自己画
那么合并是什么呢?
git的合并很简单,就是直接把master指针指向最新的dev,相当于直接用平行宇宙的世界来延续我们现在的世界。然后把head指向master,表示我们回到了现在的时空