git 入门教程之分支管理

背景

什么是分支?简单地说,分支就是两个相对独立的时间线,正常状况下,独立的时间线永远不会有交集,彼此不知道对方的存在,只有特定状况下,两条时间线才会相遇,由于相遇,因此相知,由于相知,因此改变!git

正如分支对于科幻电影来讲是一个很好的卖点,关于分支的话题彻底能够开启新的题材,对于这点相信很多科幻迷都深有体会,没必要赘述.svn

回归正题,分支对于版本控制系统又意味着什么呢?实际工做中,咱们大多做为一个团队一块儿合做开发项目,若是是独立开发者,只有一我的的话,其实用不到分支的概念,甚至远程仓库也用不到.因此下述状况针对的都是团队开发状况.测试

做为团队中的一员不管是项目领导仍是项目成员,都须要了解并掌握分支的通常概念和经常使用操做.若是你恰好是实际开发的程序猿,上级领导分派一个新功能,预期两个星期内才能完成,其余同事也是如此,每一个人都有本身的任务.接收任务就要开始干活,第一天工做开了一个头,还留下一大堆的 TODO 标记,此时你照例运行 git add ,git commit 等命令,学会上节的git push origin master 你知道了本地仓库和远程仓库的概念,你想将你的工做成果分享给其余人就要推送到远程仓库,这样其余人才能可见,等一等,别急!版本控制

首先明确的是,这个完整功能至少须要2个星期才能基本完成啊,你如今刚刚起了个头还没完成呢!你要是真的推送到远程仓库了,那其余人是否是有理由认为你这部分功能已完成?那你可能会反驳说,我能够在工做群吼一声,说这个功能还没完成,你们别着急使用哈!这样确实能够,很长一段时间内其余人必须无视你的代码,只有等你的功能基本可用时,等你再吼一声,别人才会去使用你的代码.粗略一看,好像并无什么问题?!code

实际上这种状况是存在很大风险的,由于未完成未通过测试的代码可能会产生大量意外 bug,严重的话,甚至影响整个系统,到时候因为你的未完成代码致使别人项目都没法运行,那别人还怎么工做,这个责任是谁负责?开发

因此,为了避免给其余人形成麻烦,最好不要把未完成工做直接暴露到别人面前,那长时间提交又可能会形成丢失更改的风险,此时此景,平行时间线应用而生!it

从接手新功能的时间点开始,建立一条新的时间线,因而新功能的开发彻底在新的时间线上进行,至于其余人是否开启新的时间线那就不是咱们能控制得了,咱们能作到的就是不给其余人制造麻烦,若是其余人给咱们制造麻烦的话,那咱们就去上级领导那告他一状,哈哈!ast

等功能开发差很少时,你再想办法切换到原来的时间线上并将开发时间线的更改顺便都带过来,这样一来,别人虽然看不到你的开发时间线,可是看到了你离开的这段时间原来作了这么多的更改啊!效率

如今用git的专业术语再解释一遍上述场景:bug

接手新功能的时刻开始,建立一个开发分支(既能够是本地分支也能够是远程分支),之后新功能的开发所有在开发分支上完成,处于开发分支上你能够照常运行 git add ,git commit 等命令,不用担忧丢失更改.等工做一段时间后,终于完成了新功能,是时候让新功能展现给其余同事了.此时再切换到原来的主干分支,在主干分支上合并开发分支,如今主干分支上已经有新功能了,这样一来,其余同事忽然发现你已经偷偷地完成了新功能的开发!

不只 git 有分支概念,其余版本控制系统好比 svn 也有分支概念,基本概念和经常使用操做相似,只不过 git 更强大,建立分支,切换分支,合并分支等功能十分强大,效率过高!
(svn 建立分支,切换分支等操做简直慢到能够喝一杯茶了,分支管理都快成摆设了!)

建议

  • 开发新功能时尽可能建立本身的分支,不要给其余人形成麻烦
  • 分配任务时要求项目成员建立各自分支,等时机成熟时再合并到主干分支
相关文章
相关标签/搜索