GitFlow工作流

基于 Git 这一版本控制系统,通过定义不同的分支,探索合适的工作流程来完成开发、测试、修改等方面的需求。

例如:在开发阶段,创建 feature 分支,完成需求后,将此分支合并到 develop 分支上;在发布阶段,创建 release 分支,完成阶段开发任务后,将分支合并到 develop 和 master 分支上;在修改 bug 过程中,创建 Hotfix 分支,基于此分支完成 bug 修复,并合并到 develop 和 master 分支。其中,master分⽀和develop分⽀贯穿项⽬;其他分支均为承担特定指责的临时分⽀。

分支名及作用

分⽀名称 作用 ⽣命周期 提交or合并 起⽌点
feature分⽀ 开发某个功能 临时分⽀、开发 阶段 可提交代码 由develop分支产⽣, 最终合并到develop分⽀
develop分⽀ 记录历史、开发功能 贯穿整个 项⽬ 不能提交,由Feature分 ⽀、Release 分⽀、Hotfix分⽀合并代码 整个项目
release分⽀ 用于本次Release 如文档、测试、 bug修复 临时分支、发版 阶段 可提交代码 由develop分支产⽣, 最终合并到develop 分⽀和master分支
hotfix分⽀ ⽤于解决线上bug 临时分 ⽀、紧急 修复阶段 可提交代码 由master分⽀产⽣, 最终合并到develop 分⽀和master分支
master分⽀ 记录历史发布版本 贯穿整个项目 不能提交,由Release、Hotfix分支合并代码 整个项⽬

实例


命令操作说明:

本文演示的命令是使用 win10 环境下的 WSL2.0(特殊情况会注明);

$ 符号所在行是演示命令,$ 符号所在行的下面为输出内容。


初始化项目

创建一个名为 git-demo-workflow-project 的 Git 项目,在该项目内创建一个文件并提交。

shell 复制代码
$ pwd
$ mkdir git-demo-workflow-project
$ cd git-demo-workflow-project/
$ touch readme.md
$ git init
$ git add .
$ git commit -m "init"

创建 develop 分支

shell 复制代码
$ git switch -c develop

开发阶段

创建 feature 分支来实现特定功能(实例中用文件 LoginUser.html 代替),完成功能后合并到develop分⽀,并删除 feature分⽀。

shell 复制代码
$ git checkout -b feature-login develop

$ touch LoginUser.html
$ echo "hi, this is user html" > LoginUser.html
$ cat LoginUser.html

$ git add .
$ git commit -m "feat: add LoginUser.html"

$ git status

$ git checkout develop
$ git merge --no-ff feature-login
$ git branch -d feature-login

发布阶段

创建 release 分⽀,修改提交后,合并到 master、develop分支

shell 复制代码
$(develop) git checkout  -b release-v0.1 develop

$(release-v0.1) echo "bugifx LoginUser.html" >> LoginUser.html
$ git add .
$ git commit -m "fix: bugfix for LoginUser.html"

$ git checkout master

$ git merge --no-ff release-v0.1

$ git checkout develop
$ git merge --no-ff release-v0.1
$ git branch -d release-v0.1

bug 修复阶段

创建 hotfix 分⽀修复 bug,而后合并到 master、develop分⽀。

shell 复制代码
$ git checkout -b hotfix-v0.1.1 master
$ git status

$ echo "hotfix for LoginUser.html" >> LoginUser.html
$ cat LoginUser.html
$ git add .
$ git commit -m "hotfix: do something for LoginUser.html"

$ git checkout master
$ git merge --no-ff hotfix-v0.1.1
$ git tag v0.1.1

$ git checkout develop
$ git merge --no-ff hotfix-v0.1.1
$ git branch -d hotfix-v0.1.1

参考:faster-git datawhale

相关推荐
Python私教11 小时前
Codex 自动写 Commit 够安全吗?一套证据化 Git 提交流程
人工智能·git·后端
果果燕11 小时前
实习笔记(一):NFS、Samba、VNC、Git、CMake、systemd、内核、交叉编译
linux·arm开发·c++·笔记·git
美味蛋炒饭.12 小时前
Git 版本控制(下)
开发语言·git·学习·总结·后端开发
互联网中的一颗神经元12 小时前
09 — .git 地图:打开那个隐藏文件夹
大数据·git·elasticsearch
Patrick_Wilson14 小时前
你知道 git check 的故事吗
git·程序员·命令行
互联网中的一颗神经元16 小时前
10 — 对象模型:.git/objects 里到底装了什么
git
沫璃染墨17 小时前
《从零入门Linux系统篇(十四):系统工具篇·五——Git版本控制:从版本管理到协同开发》
linux·运维·服务器·git·gitee·github
Slow菜鸟18 小时前
第5篇:进阶规范篇 · 团队协作最佳实践
git
qingyulee19 小时前
git常用指令
大数据·git·elasticsearch
雨声不在19 小时前
Git fetch 失败: gnutls_handshake() failed 的排查与修复
git