Top Banner
GIT-FLOW标准化GIT工作流程 蒋良俊
16

Use Git-flow Manage Your Git Workflow

Jan 23, 2018

Download

Technology

Liangjun Jiang
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Use Git-flow Manage Your Git Workflow

用GIT-FLOW标准化GIT工作流程蒋良俊

Page 2: Use Git-flow Manage Your Git Workflow

GIT-FLOW

¡ 基于GIT的插件

¡ 标准化常用分支,比如master, develop, feature, hotfix and release

¡ 同样的GIT命令,加一点点修改

¡ 来自Vincent Driesser的博客

¡ 非常受欢迎

*图片来自http://nvie.com/posts/a-successful-git-branching-model/

Page 3: Use Git-flow Manage Your Git Workflow

GIT-FLOW 提要

¡ 理论上,只有两个存档的分支, master, develop

¡ 所有的功能分支在各自feature分支

¡ 支持提交给测试的分支(release)和发布后紧急修复的分支 (hotfix)

¡ 基于merging

Page 4: Use Git-flow Manage Your Git Workflow

为什么是GIT-FLOW

¡ 符合我们的工作习惯

¡ 标准化的工作流程

¡ 比较容易接受并在实际工作中使用

¡ 与其它流行的项目管理工具集成度较高

¡ 比较流行

Page 5: Use Git-flow Manage Your Git Workflow

如何开始

¡ 下载并安装git flow插件

¡ 运行 git flow init (假设该项目已经用git)

¡ git-flow 自动为我们创建master - production release & develop- next release分支

¡ 自动为如下3个分支创建分支名前缀 feature, hotfix, release

¡ 演示

Page 6: Use Git-flow Manage Your Git Workflow

如何开始 - FEATURE 分支

¡ 假设使用场景,我-开发者,收到新任务,实现集成Zendesk android SDK的功能

¡ $git flow feature start ZendeskIntegration

¡ 一个本地的feature/ZendeskIntegration分支被创建

¡ 来自develop分支

¡ 很幸运,2个小时后,我完成了本功能

¡ $git commit -a -m “zendesk integration in place”

¡ $git flow feature finish ZendeskIntegration

¡ 最终,只有develop分支有我刚实施的功能

¡ $git push origin develop*http://www.slide share .net/frangarcia/git-and -git-f low

Page 7: Use Git-flow Manage Your Git Workflow

如何开始 - FEATURE 分支(CONT’D)

$git flow feature start ZendeskIntegration== $git checkout develop$git branch feature/ZendeskIntegration$git checkout feature/ZendeskIntegration

$git flow feature finish ZendeskIntegartion==$git checkout develop$git merge –no-diff feature/ZendeskIntegration$git branch –d feature/ZendeskIntegration

最后,$git push origin develop

Page 8: Use Git-flow Manage Your Git Workflow

如何开始 - RELEASE

¡ Release分支,可以理解成测试分支

¡ 使用场景,我们完成了很多重要功能,可以发布版本1.4了

¡ $git flow release start v1.4

¡ 我们把该分支的app交给测试人员测试,测试人员提出了反馈,我们修改,直到没有问题

¡ $git commit –m “fix bugs for v1.4 release”

¡ $git flow release finish v1.4

¡ master & develop分支会都得到该分支的更新

¡ 别忘了更新远程分支

¡ $git flow push origin master|develop

Page 9: Use Git-flow Manage Your Git Workflow

如何开始-HOTFIX

¡ 使用场景,我们的app 版本1.4发布了,出现了bug,我们需要修复

¡ $git flow hotfix start CrashOnSyncing

¡ $git commit –a –m “fixed a bug causing app crashes when syncing ble data”

¡ $git flow hotfix finish CrashOnSyncing

¡ 本地的master和develop分支都有这次修复

¡ $git push origin master|develop

Page 10: Use Git-flow Manage Your Git Workflow

为什么需要HOTFIX或者RELEASE

¡ Develop分支就如不断前行的列车,每天都有新功能加入

¡ Master分支是一个个由版本号控制的车站

¡ Master分支是产品分支,按期发布

¡ Release|hotfix 分支保证我们不把新增加的develop分支功能和以发布的功能混淆;从而避免引入更多的bug

¡ Release|hotfix同时也保证develop分支能及时拿到修改的内容

Page 11: Use Git-flow Manage Your Git Workflow

及时更新你的本地分支

¡ 你在自己的feature分支上¡ $git checkout develop (也许是你准备开始工作前做的第一件事)¡ $git pull

¡ $git checkout feature/ZendeskIntegration¡ $git merge develop

¡ 你在自己的hotfix分支上¡ $git checkout master¡ $git pull¡ $git checkout hotfix CrashOnSyning

¡ $git mege master

Page 12: Use Git-flow Manage Your Git Workflow

发布你本地的分支到远程

场景:我一天完成不了这个功能$git flow feature|hotfix|release publish ZendeskIntegration

场景:我需要神一样的队友来帮助$git checkout –b feature/ZendeskIntegration orgin/feature/ZendeskIntegration

你已经知道如何消灭本地不用的分支 (hint: git flow feature|hotfix|release finish branch-name)

消灭远程的不用的分支$git push origin :feature/ZendeskIntegration

Page 13: Use Git-flow Manage Your Git Workflow

GIT-FLOW适用于

¡ 参与人数较多(3人以上)

¡ 大型项目

¡ 发布有明显版本号的项目,如移动apps

*图片来自http://nvie.com/posts/a-successful-git-branching-model/

Page 14: Use Git-flow Manage Your Git Workflow

标准化GIT工作流程

¡ git-flow

¡ gitlab-flow

¡ github-flow

¡ stash-flow

Page 15: Use Git-flow Manage Your Git Workflow

从你的下一个小项目开始

Page 16: Use Git-flow Manage Your Git Workflow

参考资料

¡ http://nvie.com/posts/a-successful-git-branching-model/

¡ Slideshare links: git flow & git, git-flow & pull-requests