Git Branch说明及Git Flow规范

Git Branch 分支综述

> 基于“开发/发布/缺陷分离”模型,结合开发阶段分配分支。主要包含master/develop/release/hotfix分支。

分支特性

Master Branch

1. 生产分支,又称Production Branch。

2. 该分支只接收最近发布到生产环境的分支。

3. 本分支**只能**从其他分支**合并**,**不能**直接**修改**提交代码。

4. 默认为保护分支,不可被删除。

5. 在该分支上打tag,一般Commit Message应为"merage From Release xxx"或"merage From Hotfix yyyy"这种自动生成的日志信息。

Develop Branch

1. 公共开发分支,又称主开发分支。

2. 该分支内包含即将发布的版本代码。

3. 代码来源主要为合并自master/feature分支的代码。

4. 该分支可以修改代码,作用是提供给所有feature分支合并使用,如Podfile。

5. 该分支跟踪于master分支,即主分支有代码变更(如hotfix代码),即主动合并至最新dev分支。

 Feature Branch

1. 功能分支,又称任务分支。

2. 该分支主要用来开发独立的一个功能,比如禅道上某个需求,或者某个模块的调整。

3. 该分支的作用是撇清各个开发任务并行不交叉,不用反复合并代码解决冲突。

4. 本分支来源于develop分支,完成开发后合并于develop分支。

5. 此分支上的pod可指定本地目录;但合并至develop时应指定Branch或commit Id。

Release Branch

1. 版本分支,又称提测分支。

2. 本分支的作用为合并当期需要发布的代码,并提交测试。

3. 本分支来源于develo分支,即在开发完成后提测时各个feature合并至develop之后最新merge的代码。

4. 本分支终结于通过测试即发布时,自动合并至master分支,并删除。

5. 此分支上的pod不能依赖本地目录,通过版本Tag指定或远端分支代码commit指定。

Hotfix Branch

1. 紧急修复分支

2. 该分支的作用为修复线上bug,即在正常的release迭代版本前插队发布的分支。

3. 该分支的来源为master分支,即线上最新代码。

4. 该版本的终点为master分支,在修复代码上线后合并主分支并删除此分支。

5. 如需要后续版本中保留此代码,则需要手动同步master代码到develop。

Git Flow 工作流

> 结合预设模版,组合指令,在不同开发阶段自动创建&合并分支。

正常软件开发周期为需求评审阶段/开发阶段/测试阶段/发布阶段。

对应的代码管理顺序为新建副本/开发代码/合并代码/修改代码/发布代码。

工作流

配置模版

初始化一组新的gitflow命令,主要是指派各个分支组名。

```

git flow init

```

```

同理sourceTree:

"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"初始化仓库"

```

开发新功能

需求评审阶段,当我们接到本阶段开发计划后会根据模块及需求拆分成任务。

```

git flow feature start [featureName]

```

```

同理SourceTree:

"选中当前feature分支"->"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"建立新的功能"

```

1. 首先我们会从先Checkout develop分支(实际只会操作一次)获取最新的团队代码。

2. 然后基于develop分支建立多个feature分支。

3. 分支命名为"需求编号_功能描述_作者"或"功能模块_描述_作者",如"**4396_blackFriday_wsc**"或"**feature/webview_deprecated_jgeng**" 。

4. 原则上只需要及时合并最新develop代码;如果需要依赖其他开发分支代码,手动操作即可。

完成新功能

需求开发阶段,当我们拿到项目排期后根据所属模块在各自feature分支开发即可;当功能开发完成后将合并至公共开发分支develop。

```

git flow feature finish [featureName]

```

```

同理SourceTree:

"选中当前feature分支"->"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"完成功能"

```

1. 首先在各自的任务分支上编写代码。

2. 然后拉取最新的develop分支代码并合并至自己的分支。

3. 解决冲突,保证++可以正常运行++,保证++podfile没有依赖本地代码++。

4. 点击完成功能,将自动合并当前feature代码至develop分支并删除此feature分支。

提交测试

> 到提测日的时候,各自任务分支代码应该已经开发完毕并完成自测。

此时代码仓库状态应该自动清理完所有当期提测的feature分支并自动合并至develop分支,负责本次版本发布的同学创建提测分支。

```

git flow release start [versionName]

```

```

同理SourceTree:

"选中当前feature分支"->"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"建立新的发布版本"

```

1. 首先我们要保证所有的提测分支应该已经合并至develop分支,ddl之后合并的即算延期。

2. 然后基于已经合并本期所有内容的develop新建release分支,此后develop分支得到解放,可以继续合并下个版本的feature分支。

3. 测试期间遇到bug将统一在release分支上修复;如担心存在经常性的合并冲突可自行新建bugfix分支并手动合并到此release分支。

4. 当开始测试后该release分支将与develop分支剥离主从关系,避免dev上有下期的代码也合并到本期release上。

5. 当本次版本通过测试后,即在最后一次commit上修改版本号并Archive&upload。

完成发布

需求评审阶段,当我们接到本阶段开发计划后会根据模块及需求拆分成任务。

```

git flow feature finish [versionName]

```

```

同理SourceTree:

"选中当前feature分支"->"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"完成版本发布"

```

1. 当本次版本通过审核后,点击完成。

2. gitflow会先将本次发布分支的代码合并到master分支,并标记tag。

3. gitflow将在合并完成后,自动同步最新的master代码到develop供下期开发的feature分支合并使用。

#### 紧急修复

需求评审阶段,当我们接到本阶段开发计划后会根据模块及需求拆分成任务。

```

git flow hotfix start [bugName]

git flow hotfix finish [bugName]

```

```

同理SourceTree:

"选中当前feature分支"->"顶部菜单"->"仓库/repository"->"gitflow或hg flow"->"建立新的修复补丁/完成修复补丁"

```

1. 当线上版本出现问题时,需要基于master分支新建hotfix分支。

2. 当完成修复后,gotflow将自动合并hotfix分支至master分支并标记tag。

3. 在合并完成后,gitflow将自动同步最新的master至develop分支。

Git flow 关于branch的管理



Git Rule Remarks

目的

git branch

1. 方便代码管理,在合适的时机合并分支

2. 及时清理不必要的分支

git commit log提交信息应当简明扼要,主要用途在于

1. git repo中查看回顾此文件经历的需求

2. Jenkins中对比两次构建之间的提交

3. 关心其他成员修改模块是否对自己代码产生影响

实践要求

分支命名采取责任制的形式 "描述 - 所属人"。具体有两种命名规则:

- 根据需求来,采取"需求编号_需求描述_责任人","4396_blackFriday_wsc"

- 根据功能来, 采取"功能模块_操作描述_责任人","webview_deprecated_lbw"

提交信息命名采取关键词的形式 "xx - details"。具体有两种命名规则:

- 根据增删改查件来,采取操作+文件的方式,"Add/Del/Fix - xx类/yy文件;

- 根据所设计的模块,采取功能+描述的方式,"Detail - 新增折扣标签"


## 补充内容

//清理本地repo占用磁盘过大

```

git gc --prune=now 

```

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 14,333评论 4 54
  • 参考资料 介绍一个成功的 Git 分支模型 Git分支管理策略 简介 规范的分支管理策略可以使得版本库的演进保持...
    水止云起阅读 4,494评论 0 0
  • 原文出处:涂根华的博客 一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。 二:SVN与Git的最...
    挑战者666888阅读 9,924评论 6 27
  • 书名:《书都不会读你还想成功》 作者:二志成、郑会一(韩国) 时间:2017年1月7日 3小时 作图时间:0.5小时
    紫洋阅读 799评论 1 0
  • 有时总是心慌,总感觉自己在浪费生命。可是,每天毫无意义的忙碌,让我忘却了思考。只是,不停的苦干。做着每天重复的工作...
    f9f1de48dc41阅读 803评论 0 0