Git Flow入门与实践
Git Flow工作流定义了一个围绕项目发布的严格分支模型,它为管理更大规模的项目提供了健壮的框架。
- 流程图
- 流程图
特点
首先,项目有两个长期分支:
- 主分支 master (对外发布版本)
- 开发分支 develop (最新开发版本)
其次,项目存在三种短期分支:
- 功能分支(feature branch)
- 补丁分支(hotfix branch)
- 预发分支(release branch)
一旦完成开发,它们就会被合并进develop
或master
,然后被删除。
长期分支 (master/develop)
相对使用仅有的一个master分支,Gitflow工作流使用2个分支来记录项目的历史。master分支上存放的是随时可供在生产环境中部署的代码,而develop分支是保存当前最新开发成果的分支。
功能分支 (feature/*)
- 项目中所有新开发的功能都从develop分支出来,可以推送到远端以作备份和协作。当新功能完成时,再合并回develop分支。
- 一般而言,feature分支代码可以保存在开发者自己的代码库中而不强制提交到主代码库里。
预发分支 ( release/* )
release分支是为发布新的产品版本而设计的。在这个分支上的代码允许做小的缺陷修正、准备发布版本所需的各项说明信息(版本号、发布时间、编译时间等等)。通过在release分支上进行这些工作可以让develop分支空闲出来以接受新的feature分支上的代码提交,进入新的软件开发迭代周期。(不能再将新的代码合并到release上)
发布Release分支时,合并Release到Master和Develop, 同时在Master分支上打个Tag记住Release版本号,然后可以删除Release分支了。
- 发布版本
补丁分支(hotfix/*)
当生产环境中的软件遇到了异常情况或者发现了严重到必须立即修复的软件缺陷的时候,就需要从master分支上指定的TAG版本派生hotfix分支来组织代码的紧急修复工作。
这样做的显而易见的好处是不会打断正在进行的develop分支的开发工作,能够让团队中负责新功能开发的人与负责代码紧急修复的人并行的开展工作
- 修复紧急问题
Git Flow代码示例
a. 创建develop分支
git branch develop
git push -u origin develop
b. 开始新Feature开发
git checkout -b feature/some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature
# 做一些改动
git status
git add some-file
git commit
c. 完成Feature
git pull origin develop
git checkout develop
git merge --no-ff feature/some-feature
git push origin develop
git branch -d feature/some-feature
# If you pushed branch to origin:
git push origin --delete feature/some-feature
d. 开始Relase
git checkout -b release/rev-0.1.0 develop
# Optional: Bump version number, commit
# Prepare release, commit
e. 完成Release
git checkout master
git merge --no-ff release/rev-0.1.0
git push
git checkout develop
git merge --no-ff release/rev-0.1.0
git push
git branch -d release/rev-0.1.0
# If you pushed branch to origin:
git push origin --delete release/rev-0.1.0
git tag -a v0.1.0 master
git push –tags
f. 开始Hotfix
git checkout -b hotfix/fix-0.1.1 master
g. 完成Hotfix
git checkout master
git merge --no-ff hotfix/fix-0.1.1
git push
git checkout develop
git merge --no-ff hotfix/fix-0.1.1
git push
git branch -d hotfix/fix-0.1.1
git tag -a v0.1.1 master
git push --tags
Git Flow工具
SourceTree
- 功能界面