Transcript
用GIT-FLOW标准化GIT工作流程蒋良俊
GIT-FLOW
¡ 基于GIT的插件
¡ 标准化常用分支,比如master, develop, feature, hotfix and release
¡ 同样的GIT命令,加一点点修改
¡ 来自Vincent Driesser的博客
¡ 非常受欢迎
*图片来自http://nvie.com/posts/a-successful-git-branching-model/
GIT-FLOW 提要
¡ 理论上,只有两个存档的分支, master, develop
¡ 所有的功能分支在各自feature分支
¡ 支持提交给测试的分支(release)和发布后紧急修复的分支 (hotfix)
¡ 基于merging
为什么是GIT-FLOW
¡ 符合我们的工作习惯
¡ 标准化的工作流程
¡ 比较容易接受并在实际工作中使用
¡ 与其它流行的项目管理工具集成度较高
¡ 比较流行
如何开始
¡ 下载并安装git flow插件
¡ 运行 git flow init (假设该项目已经用git)
¡ git-flow 自动为我们创建master - production release & develop- next release分支
¡ 自动为如下3个分支创建分支名前缀 feature, hotfix, release
¡ 演示
如何开始 - 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
如何开始 - 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
如何开始 - 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
如何开始-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
为什么需要HOTFIX或者RELEASE
¡ Develop分支就如不断前行的列车,每天都有新功能加入
¡ Master分支是一个个由版本号控制的车站
¡ Master分支是产品分支,按期发布
¡ Release|hotfix 分支保证我们不把新增加的develop分支功能和以发布的功能混淆;从而避免引入更多的bug
¡ Release|hotfix同时也保证develop分支能及时拿到修改的内容
及时更新你的本地分支
¡ 你在自己的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
发布你本地的分支到远程
场景:我一天完成不了这个功能$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
GIT-FLOW适用于
¡ 参与人数较多(3人以上)
¡ 大型项目
¡ 发布有明显版本号的项目,如移动apps
*图片来自http://nvie.com/posts/a-successful-git-branching-model/
标准化GIT工作流程
¡ git-flow
¡ gitlab-flow
¡ github-flow
¡ stash-flow
从你的下一个小项目开始
参考资料
¡ http://nvie.com/posts/a-successful-git-branching-model/
¡ Slideshare links: git flow & git, git-flow & pull-requests
top related