gitflow流程规范

注:master分支正在被main分支取代。

简介

Git Flow是构建在Git之上的一个组织软件开发活动的模型,是在Git之上构建的一项软件开发最佳实践。Git Flow是一套使用Git进行源代码管理时的一套行为规范和简化部分Git操作的工具。

gitflow示意图

gitflow

Git Flow常用分支

master:

  • master分支存放的是随时可供在生产环境中部署的稳定版本代码
  • master分支保存官方发布版本历史,release tag标识不同的发布版本
  • 一个项目只能有一个master分支
  • 仅在发布新的可供部署的代码时才更新master分支上的代码
  • 每次更新master,都需对master添加指定格式的tag,用于发布或回滚
  • master分支是保护分支,不可直接push到远程仓master分支
  • master分支代码只能被release分支或hotfix分支合并

develop:

  • develop分支是保存当前最新开发成果的分支
  • 一个项目只能有一个develop分支
  • develop分支衍生出各个feature分支
  • develop分支是保护分支,不可直接push到远程仓库develop分支
  • develop分支不能与master分支直接交互

feature:

  • 分支的命名格式必须功能名,例如v1.0.0-login,login-20201109,
  • 以功能为单位从develop拉一个feature分支
  • 每个feature分支颗粒要尽量小,以利于快速迭代和避免冲突
  • 当其中一个feature分支完成后,测试通过,合并回develop分支
  • 当一个功能因为各种原因不开发了或者放弃了,这个分支直接废弃,不影响develop分支
  • feature分支只与develop分支交互,不能与master分支直接交互

release:

  • 命名规则:release/,“”以本次发布的版本号为标识
  • release分支主要用来为发布新版的测试、修复做准备
  • 当需要为发布新版做准备时,从develop衍生出一个release分支
  • release分支可以从develop分支上指定commit派生出
  • release分支测试通过后,合并到master分支并且给master标记一个版本号
  • release分支一旦建立就将独立,不可再从其他分支pull代码
  • 必须合并回develop分支和master分支

hotfix:

  • 命名规则:hotfix/,“”以本次发布的版本号为标识
  • hotfix分支用来快速给已发布产品修复bug或微调功能
  • 只能从master分支指定tag版本衍生出来
  • 一旦完成修复bug,必须合并回master分支和develop分支
  • master被合并后,应该被标记一个新的版本号
  • hotfix分支一旦建立就将独立,不可再从其他分支pull代码
gitflow角色介绍:
  • 功能开发者:模块中功能分支的开发;
  • 测试管理员:测试团队担当;
  • 项目管理员:项目开发组长(team leader)担当;
分支说明
名称说明命名规范命名示例合并目标合并操作操作者
master线上稳定版本mastermaster回合develop项目管理员
release待发布分支,下个版本需上线的版本release/xxxrelease/v1.0.0master/developmerge request项目管理员
develop当前正在开发的分支developdevelopreleasemerge request功能开发者/测试管理员
feature功能分支,每个功能需分别建立自己的子分支feature/版本号(日期)-功能名feature/v1.0.0-Logindevelopmerge request功能开发者
hotfix紧急修复分支hotfix/xxxhotfix/v1.0.1master/developmerge request功能开发者
gitflow代码示例
创建develop分支
git branch develop
git push -u origin develop  
开始新Feature开发
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
git pull origin develop
git checkout develop
git merge --no-ff some-feature
git push origin develop
# 删除Feature分支,建议保留
git branch -d some-feature

# If you pushed branch to origin:
git push origin --delete some-feature   
开始Relase
git checkout -b release-0.1.0 develop
完成Release
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
# 删除Feature分支,建议保留
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
git checkout -b hotfix-0.1.1 master
完成Hotfix
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
# 删除Feature分支,建议保留
git branch -d hotfix-0.1.1
git tag -a v0.1.1 master
git push --tags
Git flow工具

OS X: brew install git-flow

Linux: apt-get install git-flow

Windows: wget -q -O - --no-check-certificate https://github.com/nvie/gitflow/raw/develop/contrib/gitflow-installer.sh | bash

使用
  • 初始化: 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
结语

规矩是死的人是活的,当你对git非常熟悉之后,在不同的项目开发中可以灵活的使用git管理。每家公司对自己的git也可能有自己的一套管理规范。注意不要 删库跑路

参考:
简书:gitflow流程规范
dotNET跨平台

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

游语

对你有帮助,可以请我喝杯奶哦

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值