一、 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 工作流程
二、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 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