Branch简介
在开发专案时,可能同时会有多人在开发同一功能或修复错误,也可能会有多个发布版本的存在,并且需要针对每个版本进行维护,这时候便需要分支的存在,
上图表示了在Master中分支了蓝色与黄色的branch,代表着同时对于B这个点进行两种不同的处理,而分开的分支最后可以与其他的分支进行合併,所以当进行额外的开发时,可以在分支中进行开发,等到都确认完全后再将分支所处理个程式合併在Master中。
(图片来源 : 连猴子都能懂得Git入门指南)
HEAD
HEAD是一个指标,它代表着现在只向哪一个分支,通常可以把它看成 "目前所在的分支" 。
新增第一个commit
当在master中commit了一个档案,就会产生一个Master的节点,而HEAD指向了这个节点,代表着目前我们所在的是这一个地方。
在专案资料夹中新增一个index.html并将他commit上去产生一个master的节点。
新增第二个commit
在master中在新增一个commit后,会在原本的节点上面在产生一个新的节点,而HEAD则移动到第二个节点上,表示目前指向的是新的节点内容。
在index.html中新增内容并将他commit上去产生第二个master的节点。
git checkout commit前四码 -> 移动到指定的commit节点
上面新增了两个commit的节点,而HEAD目前是在第二个节点上,可以使用git log
来查看commit的纪录。
查看到commit纪录后便可以使用git checkout commit前四码
来将HEAD回到指定的commit纪录上,使用git checkout b01e
将HEAD移动到上一个commit纪录(index.html没有内容)。
可以使用git checkout master
来回到最新的commit纪录。
git branch 建立分支
在简介中提到了建立分支的用处,在这一节中则使用git的指令建立一个新的分支。
git branch "分支名称" -> 建立分支
利用git branch issue
来建立一个名叫"issue"的分支,使用git branch
可以确认目前这个专案中总共有多少分支,而分支前面的*
代表着现在HEAD所指向的分支,也就是现在的位置。
git checkout 分支名称 -> 移动到指定分支
由于HEAD目前是指向master,代表着目前对于专案所有的变动都会更改到master本身,不会对issue这个分支造成影响,所以可以使用git checkout issue
来移动到issue这个分支上,并且一样可以使用git branch
来确认是否有移动到指定分支上。
可以在git branch
上看到*
已经移动到issue上,代表我们已经将HEAD移动到issue分支上。
确认分支中的更动不会影响master
在issue分支中,对index.html的内容进行更改并将他commit。
代表着issue新增了一个commit节点,并且HEAD移动到了新的commit节点上。
HEAD目前的位置是在issue所建立的commit上,可以使用git checkout master
将HEAD移动到master上来观看master的数据是否有被更动。
可以看到在issue分支上新增的<h2>在issue分支中进行修改</h2>
这行程式码不见了,代表在不同分支进行档案变更并不会影响到其他分支的内容。
参考资料 :
连猴子都能懂得Git入门指南
掌握 Git 与 Github 程式时光机