Git flow 工作流介绍

Git Flow 工作流是一个非常成熟的方案,也是非开源项目中最常用到的工作流。它定义了一个围绕项目发布的严格分支模型,通过为代码开发、发布和维护分配独立的分支来让项目的迭代流程更加顺畅,比较适合大型的项目或者迭代速度快的项目

Git Flow 中定义了 5 种分支,分别是 master、develop、feature、release 和 hotfix。其中,master 和 develop 为常驻分支,其他为非常驻分支,不同的研发阶段会用到不同的分支。这 5 种分支的详细介绍见下表:

Git flow 完整工作流程

以开发go项目为例

1、创建示例项目 gitflow

# 创建项目目录
$ mkdir gitflow && cd gitflow
# 使用git管理
$ git init
# go mod 管理包
$ go mod init example.com/gitflow
# 生成README.md && main.go
$ cat README.md
this is gitflow show
$ cat main.go
package mainimport "fmt"func main() {fmt.Println("hello world")
}
$ ls
go.mod  main.go  README.md

2、创建常驻分支: develop

$ git  checkout -b develop master
Switched to a new branch 'develop'

3、基于develop分支,创建一个新的功能分支:feature/print-name

$ git checkout -b feature/print-name develop
Switched to a new branch 'feature/print-name'

4、在feature/print-name分支上,main.go文件中新增一句fmt.Println("my name is ")

$ cat main.go
package mainimport "fmt"func main() {fmt.Println("hello world")fmt.Println("my name is ")
}

5、这时候假如我们发现了master分支一个bug(hello world需要改成大写),需紧急修复。此时我们还没完成"my name is jack ma!",但是必须去修复master的bug。这时候就要这样处理:

# 1. 由于功能分支未完成,不想提交,所以我们需要先缓存至堆栈区。
$ git stash
# 2. 基于master分支创建hotfix/fix-hello-world并修复问题。
$ git branch -b hotfix/fix-hello-world master
$ vim main.go
$ cat main.go
package mainimport "fmt"func main() {fmt.Println("HELLO WORLD")
}
# 3. 提交修复
$ git add .
$ git commit -m "fix hello world to HELLO WORLD"
# 4. 将修复合并至develop
$ git checkout develop
$ git merge --no-ff hotfix/fix-hello-world
# 4. 将修复合并至master
$ git checkout master
$ git merge --no-ff hotfix/fix-hello-world
# 5. 给master打上tag
$ git tag -a v0.0.2 -m "fix hello world to HELLO WORLD"
# 6. 发版
$ go build -v .
# 7. 修复完成后,删除hotfix/xxx分支
$ git branch -d hotfix/fix-hello-world
# 8. 切回原开发功能分支,此时develop更新过,所以要记得merge
$ git checkout feature/print-name
$ git merge --no-ff develop
# 9. 恢复堆栈区的工作状态
$ git stash pop
$ cat main.go
package mainimport "fmt"func main() {fmt.Println("HELLO WORLD")fmt.Println("my name is")
}

6、继续功能分支开发,完成完整的名字打印后提交。

$ vim main.go
$ cat main.go
package mainimport "fmt"func main() {fmt.Println("HELLO WORLD")fmt.Println("my name is jack ma!")
}
$ git add .
$ git commit -m "add print name!"

7、将feature/print-name push 至 代码托管平台,如github , 并发起pull request ,指定Reviewers进行代码评审。

$ git push origin feature/print-name

8、评审完成之后需要将分支合并至master

git checkout develop
git merge --no-ff feature/print-name

9、基于develop分支,创建release分支,测试代码。

$ git checkout -b release/1.0.0 develop
$ go build -v .

10、假如测试失败,需要我们修改"jack ma"为"Jack Ma",那么只需要在release分支上直接修复即可。

$ vim main.go
$ cat main.go
package mainimport "fmt"func main() {fmt.Println("HELLO WORLD")fmt.Println("my name is Jack Ma!")
}
$ git add .
$ git commit -m "fix jack ma"
$ go build -v .

11、修复后测试通过,那么将release代码合并至develop&master,然后给master 打上发版标签,直接发版。可选择性删除release分支或者留作记录。

$ git checkout develop
$ git merge --no-ff release/1.0.0
$ git checkout master
$ git merge --no-ff release/1.0.0
$ git tar -a v1.0.0 -m "fix jack ma && hello world"
$ go build -v .
$ git branch -d

git flow 工作流相关推荐

  1. git flow工作流

    git flow工作流 背景: ​ 在团队开发中,因为项目的众多,每个项目也都有不同的分支,往往会造成分支的混乱.比如我最近遇到了这样的情况,因为正在开发一个较为长期的项目,正改到一半,却派出来一个紧 ...

  2. git flow 概念

    git flow 概念 Git作为一个代码管理系统,不可避免的会涉及到多人协作. 俗话说无规矩不成方圆.Git Flow 就是如何使用git 分支的一种规范,或者叫做推荐.简单来说就是通过规范化的流程 ...

  3. mac中使用Sourcetree的git flow

    mac中使用Sourcetree的git flow 前言 1.git flow工作流 1.1 什么是git flow 1.2 git flow上的分支 1.2.1 长期分支 1.2.2 短期分支 1. ...

  4. Git的使用——Git 常用命令总结、Git的使用、Git 的分支、远程仓库的使用、IDEA 中使用Git、Git 工作流(Git Flow、Github Flow、GitLab Flow)

    Git的使用--Git 常用命令总结.Git的使用.Git 的分支.远程仓库的使用.IDEA 中使用Git 一.Git 常用命令总结 为了方便后续查找命令,故先把总结放前面,教程放后面 1.git 基 ...

  5. Git学习笔记—Git Flow

    在Java程序开发中的定制开发规范,想要把项目正规高效的跑起来.引入 Git 版本控制,Git-Flow 便成为了首选. 今天动力节点Java学院来带你了解一下. 一.为什么使用 git-flow 当 ...

  6. Git,Git Flow,GitLab使用指南

    高效利用一次蹲坑时间,看看如何使用Git Flow进行高效开发,什么才是Git提交的正确姿势,怎样使用GitLab进行Code Review: 使用Git Flow高效开发: Git提交正确姿势,Co ...

  7. Git flow(使用工具自动git flow+解决合并冲突)

    Git flow(使用工具自动git flow+解决合并冲突) 1. Git Flow常用分支 生产分支(master) Master分支只能从其他分支合并,不可直接修改‌,Master分支的Comm ...

  8. 《六》Git Flow

    Git Flow 是一种 Git 工作流,通过为功能开发.发布准备和维护分别设立独立的分支,让发布迭代过程更流畅. 安装 Git Flow: 安装并初始化 Git Flow 后,Git 还是可以像之前 ...

  9. 增强版 Git Flow 模型

    使用 Git 的最佳方式一直存在争议.那是因为 Git 本身只详细说明了基本的分支操作,这使得它的使用模式: 即分支模型--常常成为用户有意见的地方.虽然Git 分支模型能够帮助开发者减少其在更改代码 ...

最新文章

  1. 动图处理_面对单刀球的几种处理方法(动图演示)
  2. bzoj1491: [NOI2007]社交网络
  3. Windows之Wireshake之抓HTTP请求包(过滤目的IP)
  4. 汇编语言学习——第四章 第一个汇编程序
  5. CSS盒子的三种类型(border-box、content-box)
  6. 网段和子网的区别_石笼网袋和石笼网的区别
  7. 11 wifi6速率_什么是WiFi 6?究竟有多6?
  8. ELK入门级介绍--打造实时日志查询系统
  9. y空间兑换代码_如何让Python代码加速运行?
  10. sql优化的N种方法_持续更新
  11. 查询CI框架的版本号
  12. SQL 基础教程 练习题 Chapter 1
  13. 户籍管理系统php,户籍管理系统.rar - 源码下载|Windows编程|数据库编程|源代码 - 源码中国...
  14. vios aix_为AIX或VIOS选择多路径路径控制模块的指南
  15. 亲自动手制作来自MyBatis-Spring官网的chm格式帮助文件
  16. Python Numpy数组的降序排列 由大到小
  17. 今日头条推出“悟空问答” 做智能问答分发先驱者
  18. 圆满落幕!回顾 eBPF 技术的发展与挑战
  19. 2008大连市政府挂牌督办48项工作圆满实现全年目标
  20. Python实现整蛊、木马等黑客软件!

热门文章

  1. F5 多个严重漏洞通告
  2. 如何用python进行相关性分析_使用 Python 查找分类变量和连续变量之间的相关性...
  3. 格子刷油漆(python)
  4. IT行业的应届大学生,如何制作简历?
  5. 80后90后成股市开户主力 网友调侃解套有希望了
  6. 自动化测试工程师-阿里的电话面试问题
  7. SecureCRT使用(转)
  8. sql server语法——分页查询
  9. 机器学习概述、特征工程、Scikit-learn
  10. html局部翻页效果,(html)图片局部特写效果