一、 GitFlow 介绍

1.1 什么是 GitFlow

GitFlow 是一种 Git 工作流,它是团队成员遵守的一种代码管理方案 。

1.2 GitFlow 常用分支说明

Production生产分支,即 Master分支。只能从其他分支合并,不能直接修改
Release发布分支,基于 Develop 分支创建,待发布完成后合并到 Develop 和 Production 分支去
Develop主开发分支,包含所有要发布到下一个 Release 的代码,该分支主要合并其他分支内容
Feature新功能分支,基于 Develop 分支创建,开发新功能,待开发完毕合并至 Develop 分支
Hotfix修复分支,基于 Production 分支创建,待修复完成后合并到 Develop 和 Production 分支去,同时在 Master 上打一个tag

1.3 GitFlow 工作流程

Git之GitFlow工作流-LMLPHP

二、GitFlow 实践

2.1 创建 develop 分支

# 创建 develop 分支
git branch develop
# 将 develop 分支推送到远端仓库
git push -u origin develop

2.2 开始新的 Feature

# 通过develop新建feaeure分支
git checkout -b Feature分支名 develop
# 可选,将分支推送到远端仓库
git push -u origin Feature分支名

2.3 编辑 Feature 分支

# 查看状态
git status
# 添加提交内容
git add XXXfile
# 提交
git commit

2.4 完成 Feature 分支

# 拉取远端仓库 develop 分支合并到本地 develop 分支
git pull origin develop
# 切换到 develop 分支
git checkout develop
# 将 Feature 分支合并到 develop 分支
# --no-ff:不使用 fast-forward 方式合并,保留分支的 commit 历史
# --squash:使用 squash 方式合并,把多次分支 commit 历史压缩为一次
git merge --no-ff Feature分支名
# 将分支推送远端仓库
git push origin develop
# 删除 Feature分支
git branch -d Feature分支名

2.5 开始Relase

# 创建 Relase 分支并切换到 Relase 分支上
git checkout -b release-0.1.0 develop

2.6 完成Release

# 切换到 master 分支上
git checkout master
# 合并 release-0.1.0 分支
git merge --no-ff release-0.1.0
# 推送到远端仓库
git push
# 切换到 develop 分支上
git checkout develop
# 合并 release-0.1.0 分支
git merge --no-ff release-0.1.0
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d release-0.1.0

2.7 开始Hotfix

# 创建 hotfix 分支并切换到 hotfix 分支上
git checkout -b hotfix-0.1.1 master

2.8 完成Hotfix

# 切换到 master 分支
git checkout master
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix-0.1.1
# 推送到远端仓库
git push
# 切换到 develop 分支
git checkout develop
# 合并 hotfix-0.1.1 分支
git merge --no-ff hotfix-0.1.1
# 推送到远端仓库
git push
# 删除 release-0.1.0 分支
git branch -d hotfix-0.1.1
# 为主分支打上版本标签
git tag -a v0.1.1 master
# 将标签推送到远端仓库
git push --tags

三、 GitFlow 工具推荐

3.1 Git flow script(命令行)

Git之GitFlow工作流-LMLPHP

初始化:

git flow init

开始新Feature:

git flow feature start MYFEATURE

Publish一个Feature(也就是push到远程):

git flow feature publish MYFEATURE

获取Publish的Feature:

git flow feature pull origin MYFEATURE

完成一个Feature:

git flow feature finish MYFEATURE

开始一个Release:

git flow release start RELEASE [BASE]

Publish一个Release:

git flow release publish RELEASE

发布Release:

git flow release finish RELEASE
git push --tags

开始一个Hotfix:

git flow hotfix start VERSION [BASENAME]

发布一个Hotfix:

git flow hotfix finish VERSION

3.2 SourceTree (图形化)

Git之GitFlow工作流-LMLPHP

05-11 13:06