当前位置: 首页 > news >正文

GitFlow工作流

GitFlow 是一种 Git 工作流,这个工作流程围绕着project的发布(release)定义了一个严格的如何建立分支的模型。它是团队成员遵守的一种代码管理方案 。

Git建分支是非常cheap的,我们可以任意建立分支,对任意分支再分支,分支开发完后再合并。

比较推荐、多见的做法是特性驱动(Feature Driven)的建立分支法(Feature Branch Workflow)。

简而言之,就是每一个特性(feature)的开发并不直接在主干上开发,而是在分支上开发,分支开发完毕后再合并到主干上。

这样做的好处是:

还处于半成品状态的feature不会影响到主干

各个开发人员之间做自己的分支,互不干扰

主干永远处于可编译、可运行的状态

GitFlow则在这个基础上更进一步,规定了如何建立、合并分支,如何发布,如何维护历史版本等工作流程。

分支名称 分支说明

Production 生产分支,即 Master分支。只能从其他分支合并,不能直接修改

Release 发布分支,基于 Develop 分支创建,待发布完成后合并到 Develop 和 Production 分支去

Develop 主开发分支,包含所有要发布到下一个 Release 的代码,该分支主要合并其他分支内容

Feature 新功能分支,基于 Develop 分支创建,开发新功能,待开发完毕合并至 Develop 分支

Hotfix 修复分支,基于 Production 分支创建,待修复完成后合并到 Develop 和 Production 分支 去,同时在 Master 上打一个tag

GitFlow 工作流程

一、Git Flow 最常用的「语句」

Git Flow 本质上是「分支模型 + 一套约定俗成的命令」。
最早是 Vincent Driessen 的 A successful Git branching model,后来社区做了一个封装脚本 git-flow (AVH Edition)。以下命令假设你已经装好扩展,命令以 git flow ... 开头;如果你不用扩展,用纯 Git 命令也能做,只是得自己记流程。

1. 初始化仓库(只做一次)

bash

复制

git flow init           # 交互式问你要用哪些分支名
git flow init -d        # -d = --defaults,全部用默认值(master/develop)

初始化后会在 .git/config 里写几个变量,告诉脚本主分支、开发分支、前缀叫什么。

2. 开始一个功能(feature)

bash

复制

git flow feature start login-page      # 创建并切到 feature/login-page
# 相当于:
#   git checkout -b feature/login-page develop

开发完以后:

bash

复制

git flow feature finish login-page     # 把分支合并回 develop,然后删除
# 相当于:
#   git checkout develop
#   git merge --no-ff feature/login-page
#   git branch -d feature/login-page

多人协作:

bash

复制

git flow feature publish login-page    # 把本地分支推到远程同名分支
git flow feature pull origin login-page

3. 准备发布(release)

bash

复制

git flow release start 1.3.0          # 基于 develop 创建 release/1.3.0
# 修 bug、改版本号……
git flow release finish 1.3.0         # 合并到 master 和 develop,打 tag

finish 时会:

  1. 把 release/1.3.0 合并到 master
  2. 在 master 打 tag v1.3.0
  3. 再把 release/1.3.0 合并回 develop
  4. 删除 release/1.3.0 分支

4. 紧急热修复(hotfix)

bash

复制

git flow hotfix start 1.2.1           # 基于 master(线上代码)
# 修完:
git flow hotfix finish 1.2.1          # 合并到 master 和 develop,打 tag

5. 支持版本(support)——很少用

bash

复制

git flow support start 1.2.x master   # 给老版本建长期维护分支

二、-u 这一类「符号」到底是什么意思

Git 的命令行接口跟 Unix 世界大多数工具一样,用 flag/option 来改变默认行为。
写法分两种:

  • 短选项:一个横线 - 后面跟一个字母,可以连写,如 -u-am(等价于 -a -m)。
  • 长选项:两个横线 -- 后面跟一个单词,如 --set-upstream--all

最常见的 -u 场景:git push -u origin feature

bash

复制

git push -u origin feature/login-page

这里的 -u--set-upstream 的简写,作用:

把本地分支 feature/login-page 与远程分支 origin/feature/login-page 建立「追踪关系」(upstream)。
以后你只需要敲 git push / git pull,Git 就知道跟哪个远程分支同步。

建立追踪后,.git/config 里会出现:

复制

[branch "feature/login-page"]remote = originmerge = refs/heads/feature/login-page

其他高频符号/flag 举例

表格

复制

命令

符号

全称/含义

一句话解释

git commit -a

-a

--all

把已跟踪文件的修改全部自动加到暂存区然后提交

git commit -m "msg"

-m

--message

直接在命令行写提交信息

git checkout -b xxx

-b

--branch

创建并立即切换到新分支

git branch -d xxx

-d

--delete

删除已合并的分支(安全)

git branch -D xxx

-D

--delete --force

强制删除分支

git push -f

-f

--force

强制推送,覆盖远程历史

git merge --no-ff xxx

--no-ff

禁用 fast-forward

保留分支拓扑,方便看历史

git log --oneline --graph --decorate

多个长选项

一行显示、图形、分支/标签标记

最美 log 三连


小结

  • Git Flow 的核心命令就 5 组:init / feature / release / hotfix / support,背后都是「在某个分支上创建、合并、删除」的普通 Git 操作。
  • -u, -m, -b, -d, -f 之类只是「选项缩写」,用 man git-<子命令>git <子命令> -h 就能查到全称和作用。记住:一个横线是短选项,可以合并写;两个横线是长选项,好读但打字多。
http://www.dtcms.com/a/353674.html

相关文章:

  • 铠德科技为您详解静电与温冲背后的隐形损失
  • 下一代防火墙
  • nestjs 导出excel
  • JoyAgent-JDGenie开源多智能体系统详解:架构、部署与企业级应用案例
  • day22 回溯算法part01
  • Day6--HOT100--238. 除自身以外数组的乘积,41. 缺失的第一个正数,73. 矩阵置零
  • 前端漏洞(下)- ClickJacking漏洞
  • 指针 (六):sizeof和strlen细节强化之“做题篇”
  • stl--std::map
  • Java 使用Jna 调用 C# dll文件踩到的坑
  • SpringBoot整合Redis:从入门到实战的完整指南
  • 【Linux 小实战】自定义 Shell 的编写
  • LCD 上显示字符
  • zookeeper-集群扩缩容
  • 稳敏双态融合架构--架构师的练就
  • banner这个文件是怎么请求到后端数据的
  • Rust:引用
  • Vue-24-利用Vue3的element-plus库实现树形结构数据展示
  • Autodesk Maya 2026.2 全新功能详解:MotionMaker AI 动画、LookdevX 材质增强、USD 工作流优化
  • 在MiniOB源码中学习使用Flex与Bison解析SQL语句-第二节
  • 【Linux】正则表达式学习记录
  • FFMPEG api使用
  • 从disable_cost到disabled_nodes,最小代价预估质的飞跃
  • nestjs日志(nest-winston)
  • pyecharts可视化图表-tree:从入门到精通
  • Linux 系统调优与CPU-IO-网络内核参数调优
  • Task04: CAMEL框架中的多智能体系统(课程第三章剩余章节)
  • 大模型安全概述、LlamaFirewall
  • ESP8266:Arduino学习
  • 前端性能优化:从指标监控到全链路落地(2024最新实战指南)