Git 建立分支流程介绍

为什么要有分支

建立分支的原因是 git 因为是分布式的,所以其核心就是分支,分支的意义在于,可以将项目代码按照功能、模块拆分成不同的分支。比如这个产品要加一个支付功能和一个登陆功能,可以创建两个分支,交给不同的开发人员并行开发。登陆功能先开发完,测试无误后合并改分支到 master 分支,master 分支部署上线。支付功能虽然没有开发完成,但是在另一条分支上,所以产品上线和功能开发完全不受影响。这才是分布式开发的高效模式。还有这样,以自己名字建立一个分支比如 xiancai,这个分支是已经做好的功能,随时可以合并到 master 上线,开发的时候,建立一个带功能前缀的分支,比如 xiancai-ninghao 、xiancai-ninghao 等等,开发完之后在合并到 xiancai,每次上线,把 xiancai 合并到 master 。总之分支的做重要的意义就是提高效率!!! 这样方便团队开发,并且不会导致混乱。
分支有如下几条:

  1. Master 主分支
  2. Develop 分支
  3. Feature 功能分支
  4. Release 预发布分支
  5. Hotfix(或者Fixbug) 分支

以上各分支之间的逻辑关系见下图;

其中对于 Feature 功能分支有;

  • 从哪个分支分离开来:develop
  • 必须要合并到哪个分支上:develop
  • 分支的命名规范:除了 master,develop,release-,或者 hotfix- 以外的名字都可以比如可以用 feature-*的方式命名。

其中对于 Release 预发布分支有;

  • 从哪个分支分离开来: develop
  • 必须要合并到哪个分支上:develop 与 master
  • 分支的命名规范: release-*

其中对于 Hotfix(或者 Fixbug) 分支有;

  • 从哪个分支分离开来:master
  • 必须要合并到哪个分支上:develop 与 master
  • 分支的命名规范:hotfix-* 或者 fixbug-*

主分支

Master 主分支

首先,代码库应该有一个、且仅有一个主分支。所有提供给用户使用的正式版本,都在这个主分支上发布。Git 主分支的名字,默认叫做 Master。它是自动建立的,版本库初始化以后,默认就是在主分支在进行开发。

Develop 分支

主分支只用来分布重大版本,日常开发应该在另一条分支上完成。我们把开发用的分支,叫做 Develop。

创建分支

git branch develop              #只创建分支
git checkout develop  #创建并切换到 develop 分支

合并分支

git checkout master         #切换到主分支
git merge --no-ff develop   #把 develop 合并到 master 分支,no-ff 选项的作用是保留原分支记录
git branch -d develop       #删除 develop 分支       

这里稍微解释一下,上一条命令的--no-ff参数是什么意思。默认情况下,Git执行"快进式合并"(fast-farward merge),会直接将Master分支指向Develop分支。

次分支

除了 master 与 develop 这两个主分支,在开发时还可以创建一些次分支,目的是让团队不同的成员之间可以平行开发,更容易跟踪功能,准备为生产的发行版,快速修复生产上的问题等等。这些分支生命周期有限,可以在用完以后删掉他们。

Feature 功能分支

Feature(功能) 分支,有时候也叫 Topic 分支。在这种分支上去开发新的功能。当开发功能的时候,这个功能属于哪个目标发行还不知道。功能如果一直在开发,对应的这个功能分支就可以一直存在,不过到最后还是要合并到 develop 分支上,或者如果不想要开发的这个功能了,可以直接扔掉它。

功能名字的命名已经在上文中有提到。
创建一个功能分支:

git checkout -b feature-x develop

开发完成后,将功能分支合并到develop分支:

git checkout develop        
git merge --no-ff feature-x    

删除feature分支:
git branch -d feature-x## Release 预发布分支

它是指发布正式版本之前(即合并到Master分支之前),我们可能需要有一个预发布的版本进行测试。预发布分支是从Develop分支上面分出来的,预发布结束以后,必须合并进Develop和Master分支。它的命名,可以采用release-*的形式。
创建一个预发布分支:

git checkout -b release-1.2 develop  

确认没有问题后,合并到master分支:

git checkout master          
git merge --no-ff release-1.2    
#对合并生成的新节点,做一个标签    
git tag -a 1.2    

再合并到develop分支:

git checkout develop   
git merge --no-ff release-1.2    

最后,删除预发布分支:

git branch -d release-1.2     

Fixbug 修补bug分支

最后一种是修补bug分支。软件正式发布以后,难免会出现bug。这时就需要创建一个分支,进行bug修补。 修补bug分支是从Master分支上面分出来的。修补结束以后,再合并进Master和Develop分支。它的命名,可以采用fixbug-*的形式。
创建一个修补bug分支:

git checkout -b fixbug-0.1 master    

修补结束后,合并到master分支:

git checkout master    
git merge --no-ff fixbug-0.1   
git tag -a 0.1.1    

再合并到develop分支:

git checkout develop     
git merge --no-ff fixbug-0.1    

最后,删除"修补bug分支":

git branch -d fixbug-0.1
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,524评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,869评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,813评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,210评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,085评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,117评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,533评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,219评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,487评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,582评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,362评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,218评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,589评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,899评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,176评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,503评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,707评论 2 335

推荐阅读更多精彩内容

  • Git分支管理 master:主分支,当前分支上的代码随时可以直接发布,并且只能通过Pull Request从其他...
    UEUEO阅读 9,564评论 5 33
  • 如果你严肃对待编程,就必定会使用"版本管理系统"(Version Control System)。 眼下最流行的"...
    木易林1阅读 571评论 1 0
  • 多种多样的工作流使得在项目中实施Git时变得难以选择。这份教程提供了一个出发点,调查企业团队最常见的Git工作流。...
    JSErik阅读 4,348评论 2 8
  • 本来准备周六休假的,却恰如其分的遇上厂里组织的聚餐,美好的泡沫应声破灭。 伴着渐行渐远的脚步,伴着去往远方的归途,...
    风不千山阅读 256评论 0 0
  • ①到武昌沙湖车管所办理唐荆川的暂住证 ②到犇天下找周丽莎退弟子费 ③到三店学校找李校长谈做义工的事 ④找汉阳的跆拳...
    家庭教育秦燕阅读 120评论 0 0