1、分支的概述
分支是Git相对于其它VCS(version control system,版本控制系统)而言的又一个优势,传统的VCS创建速度都非常慢,这其中就包含大名鼎鼎的SVN(Subversion),所以分支已经快成为一个被开发者们淡忘的功能。
 
但在Git里,无论是1个文件,还是1万个文件,创建分支的时间也不过毫秒之间。这使得分支又开始被开发者们所使用。分支的与现在流行的“敏捷开发”概念非常契合,减少了项目开发中的一些浪费时间的“等待”。
 
那分支是一个什么样的概念呢?
 
有分支就有主线,分支和主线是一种趋于平行的关系,在必要的阶段可以让他们相交。每次的相交标志着一个较为成熟的版本发布。
 
为了说明这个问题,我们窃取廖雪峰老师的几张图来说明一下。
 
我们项目中的一个个的版本就好比图中的圆圈,而最后的那个圈就是我们当前的最新版本:
 
当分支“dev”被创建时,暂时他们是处于一个“交点”上的:
 
而后续开发的新页面的功能是不完善的,界面也是还没有做得足够完美的,这显然是不能作为一个版本去发布的。但这个时候我们又不能去等待,项目的进度还是得继续前进,这个时候我们可以进入dev分支去开发我们项目的新功能页面,像这样:
dev分支的功能页面已经完成,与之前的页面已经能完美“衔接”的时候,我们就可以将dev分支合并(merge)到master主线上,从而形成一个新的较完善版本。
 
当这个阶段的项目完成后,我们可以删除掉分支,让版本有唯一的一条主线:
 
 

 
2、创建、切换、合并、删除分支
在使用分支之前,我们得先了解分支的一些相关的命令:
创建分支“dev”: git branch dev
切换到“dev”分支: git checkout dev
合并“dev”分支: git merge dev
删除“dev”分支: git branch -d dev
查看所有分支和当前分支: git branch
 
其实创建分支和切换分支可以合并为一条命令:
git checkout -b dev
其中的 -b指的就是 branch命令,表示创建并切换到“dev”分支,这是一种更佳简便高效的做法,也更为常用。
 
当然,这里的“dev”只是一个分支的名称,可以是其它的英文字母,如一个多人团队开发同一个项目,组员向GitHub远程仓库push的版本通常是某一个分支,多个组员就有多个分支,由项目管理者(项目经理、组长)来合并这些分支到master主线上。每个组员的分支名是不能一样的,可以用组员的英文名或者姓名的拼音作为分支名。
 
这张图能很好的描述这样的场景:
 
master是一个比较稳定的版本分支,仅用来发布最新版本,而图里的dev分支可以认为是团队开发所用的“主分支”,而michael和bob都是项目组员,会将自己完成每个阶段的功能向dev合并,而他们两个之间从第一个版本后并没有什么交集了,由开发组长(或项目经理)来决定什么时候将dev分支合并到master主线上。
 

 
 
Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐