三、分支
前面的章节不止一次的提到过分支仓库分支仓库,这一章就是说一说分支那些事儿。
3.1 分支简介
1. 分支与版本库的关系
前面的章节中我们习惯于将分支仓库的概念等同于版本库,其实二者完全不同的两种概念。
在 2.2 中介绍了如何创建一个版本库,当一个版本库被创建成功时,它会默认的为我们创建一个 master 分支仓库,如下图所示:
我们姑且只看右边:
-
一个版本库中可以包含很多个分支仓库
前面由于只有一个 master 分支仓库,所以我们好像把 master 的分支仓库就看成了版本库,其实它是版本库的一部分。
-
一个分支仓库中存放着不同时间的版本备份文件
每次提交,Git 都把它们串成一条时间线,这条时间线就是一个分支。
我们不禁会想,自然一个分支仓库就可以记录不同时间的版本备份信息,为什么还需要整多个分支呢?
2. 为什么需要多个分支
分支的出现大大提高的团队开发的效率。
-
接到一个项目时,第一步是将项目的功能点进行拆分,然后分下去让开发人员进行开发对应的小模块;
-
第二步是将项目在版本库中的主分支进行备份。
为什么强调主分支,原因是当我们突发灵感想要创作的时候可以创建一个自己的分支在上面进行试验,如果最终失败直接舍弃该分支即可,如果成功,将该分支往主分支上进行合并即可。
主分支某种层面上将算是公共的东西。如果不使用其它分支,小明和小红都在主分支上进行开发,小明在第一天只开发了功能的百分之五十,然后将代码同步到主分支进行一次备份,而小红这时从主分支拉下了所有代码,由于小明的功能模块没有开发完成,导致小红这边启动项目时报错。
可能又会说,那小明不能等全部开发完成再将代码上传到主分支吗?那么问题来了,小明第二天来继续昨天的开发,当开发到百分之七十的时候发现自己逻辑错误,想要回到昨天晚上的代码,由于代码没有全部开发完不能上传到主分支进行备份,所以只能手动凭借记忆一点点的复原。
-
第三步小明和小红分别从主分支上创建自己的分支。
-
创建的自己分支与主分支在创建的那个时间点是一毛一样的;
-
小明可以在每天工作结束时在自己的分支进行代码备份,以防第二天要还原之前某个版本,这个操作对主分支没有任何影响;
-
小明等到自己的功能点全部开发完成时,将自己的分支与主分支进行合并,这时候小红下载主分支的代码就不会有任何问题了;
-
在合并完自己的分支后就可以将自己的分支删除保持 Git 的简洁性。
-