Git工作流

GitFlow是Vincent Driessen提出的A Successful Git Branching Model
流程图翻译如下

分支介绍

主要分支:永久分支,生命周期与项目同步

  • master:永远处在production-ready状态,保存已发布的版本
  • develop:当前最新的工作状态

辅助分支: 临时性分支

  • feature:开发新功能或较大的功能改动,一般基于develop分支,完成后merge回develop分支
  • realease:准备发布版本,只完善当前版本,不加新功能。基于develop分支,完成后merge回develop和master(标记tag)
  • hotfix:有紧急bug需修复上线,赶不及下次release。基于最新master,完成后merge回develop和master(标记)

分支图解

初始分支

所有在master分支上的commit 应该tag

feature分支

分支命名为feature/*,feature分支完成后,必须合并回develop, 合并完分支后一般会删点这个Feature分支,但是我们也可以保留

release分支

分支命名为release/*,release分支基于develop分支创建,创建release分支后,可以进行测试,修改bug等。同时,其它开发人员可以基于开发新的Feature

hotfix

分支名hotfix/*,修复线上出现的紧急bug
1460782826567_5.png

Git Flow代码示例

创建develop

1
2
git branch develop
git push -u origin develop

开始新feature开发

1
2
3
4
5
6
7
8
git checkout -b some-feature develop
# Optionally, push branch to origin:
git push -u origin some-feature

# 做一些改动
git status
git add some-file
git commit

完成feature

1
2
3
4
5
6
7
8
9
git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop

git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature

开始relase

1
2
3
4
git checkout -b release-0.1.0 develop

# Optional: Bump version number, commit
# Prepare release, commit

完成release

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
git checkout master
git merge --no-ff release-0.1.0
git push

git checkout develop
git merge --no-ff release-0.1.0
git push

git branch -d release-0.1.0

# If you pushed branch to origin:
git push origin --delete release-0.1.0

git tag -a v0.1.0 master
git push --tags

开始hotfix

1
git checkout -b hotfix-0.1.1 master

完成hotfix

1
2
3
4
5
6
7
8
9
10
11
12
git checkout master
git merge --no-ff hotfix-0.1.1
git push

git checkout develop
git merge --no-ff hotfix-0.1.1
git push

git branch -d hotfix-0.1.1

git tag -a v0.1.1 master
git push --tags
-------------本文结束感谢您的阅读-------------