IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> GitFlow工作流 -> 正文阅读

[开发工具]GitFlow工作流

Gitflow是一种用于管理Git分支的颠覆性和新颖性策略。Gitflow在基于主干的工作流上越来越受欢迎,它被称为现代持续软件开发和DevOps模式的最佳实践。Gitflow同样可用于CI/CD。

什么是Gitflow?

Gitflow是一种多分支管理的Git分支模型。它由文森特·德里森 (Vincent Driessen) 在 nvie 首次发布。对比基于主干的开发模式,GItflow拥有数量更多,存活时间更长,更多提交的特点。在这种模式下,开发者创建一个功能分支并延迟将其合并到主干分支直到功能完成。这种长存活功能分支需要更多的协作才能合并并且存在更高的偏离主干分支的风险,有可能会引发冲突。

Gitflow适用于具备预定发布周期的项目和持续交付的DevOps最佳实践。这种工作流不会新增超过功能分支工作流所需的新概念或新命令。它为不同的分支分配了非常具体的角色,并定义了它们应该如何以及何时交互。除了功能分支之外,它还使用单独的分支来准备、维护和记录版本。当然,您还可以利用功能分支工作流程的所有优势:拉取请求、独立实验和更高效的协作。

入门

Gitflow 实际上只是 Git 工作流程的抽象概念。 这意味着它规定了要设置什么样的分支以及如何将它们合并在一起。 我们将在下面讨论分支的目的。 git-flow 工具集是一个具有安装过程的实际命令行工具。 git-flow 的安装过程很简单。 git-flow 的软件包可在多个操作系统上使用。 在 OSX 系统上,您可以执行 brew install git-flow。 在 Windows 上,您需要下载并安装 git-flow。 安装 git-flow 后,您可以通过执行 git flow init 在项目中使用它。 Git-flow 是一个围绕 Git 的包装器。 git flow init 命令是默认 git init 命令的扩展,除了为您创建分支外,不会更改存储库中的任何内容。

怎么运行

Develop和Main分支

相对采用单分支管理,Git工作流使用两个分支来记录项目记录。 主分支用作存储官方发布记录,开发分支用作功能的集成分支。 使用版本号标记主分支中的所有提交也很方便。

第一步是从main创建一个开发分支。一种简单的方法是让开发人员在本地创建一个空的开发分支并将其推送到服务器:

git?branch?develop git?push?-u?origin?develop

develop分支将包含项目的完整历史记录,而 main分支将只包含最新的生产版本。其他开发人员应从develop分支clone创建一个本地跟踪分支。

如果采用 git-flow 扩展库,使用git flow init 命令将自动创建develop分支:

$?git?flow?init Initialized?empty?Git?repository?in?~/project/.git/ 
No?branches?exist?yet.?Base?branches?must?be?created?now. 
Branch?name?for?production?releases:?[main] 
Branch?name?for?"next?release"?development:?[develop] 
How?to?name?your?supporting?branch?prefixes? Feature?branches??[feature/] 
Release?branches??[release/] Hotfix?branches??[hotfix/] Support?branches??[support/] 
Version?tag?prefix??[] $?git?branch *?develop ? main

Feature分支

每个新功能都应该创建自己的功能分支,如果需要备份/协作可以将其推送到中央存储库。但是,feature分支不应该从main分支拷贝,而是从最新的开发分支拷贝创建。当一个功能完成后,它会被合并回develop。feature分支不应该直接与 main 交互。

?

通过以下命令创建feature分支

不使用git-flow插件:

git?checkout?develop 
git?checkout?-b?feature_branch

使用git-flow插件:

git flow feature start feature_branch

当完成功能的开发工作后,下一步是将 feature_branch 合并到develop。

不使用git-flow插件:

git?checkout?develop 
git?merge?feature_branch

使用git-flow插件:

git flow feature finish feature_branch

Release分支

?

一旦 develop 具备发布条件,我们就可以从 develop 分支分支发布。创建release分支后会启动下一个发布周期,因此在此之后不能添加新功能——只有bugfix、文档编辑和其他面向发布的任务才能在release分支中进行。但具备发布条件后,发布分支会合并到 main 分支中,并打上版本号标记。此外,我们还应该重新合并到develop中,y因为从创建release以来可能存在变化。

使用专门的分支来准备发布,可以让一个团队继续完善当前版本,而另一个团队并行为下一个版本开发功能。它还创建了明确的开发阶段(例如,“本周我们开发版本 4.0”,我们可以在GIT库中实际看到4.0的功能分支)。

创建release分支是一个简单的分支操作,和feature分支一样,release分支也是基于develop分支的。可以使用以下方法创建新的release分支。

不使用git-flow插件:

git?checkout?develop 
git?checkout?-b?release/0.1.0

使用git-flow插件:

$?git?flow?release?start?0.1.0 ? 
Switched?to?a?new?branch?'release/0.1.0'

一旦release分支完成发布,它将被合并到main和develop分支中,然后release分支将被删除。重新合并到develop分支中很重要,因为可能已将关键更新添加到release分支中,并且需要新功能可以使用它们。

通常采用以下方式完成release分支

不使用git-flow插件:

git?checkout?main 
git?merge?release/0.1.0

使用git-flow插件:

git?flow?release?finish?'0.1.0'

Hotfix分支

hotfix分支用于快速修补生产版本。hotfix分支和release分支、feature分支很像,只是它基于 main分支 而不是develop分支,它是唯一应该直接从 main 分支clone的分支。修复完成后,hotfix分支将合并到main分支和develop分支(或当前版本分支)中,并且main分支应使用更新的版本号进行标记。

拥有专门的Hotfix分支可以让团队解决问题而无需中断当前工作版本或等待下一个发布周期,Hotfix通常为临时分支。可以采用以下方式创建Hotfix分支:

不使用git-flow插件:

git?checkout?main git?checkout?-b?hotfix_branch

使用git-flow插件:

git?flow?hotfix?start?hotfix_branch

与完成release分支类似,hotfix分支会合并到main分支和develop分支中。

不使用git-flow插件:

git?checkout?main 
git?merge?hotfix_branch 
git?checkout?develop 
git?merge?hotfix_branch 
git?branch?-D?hotfix_branch

使用git-flow插件:

$?git?flow?hotfix?finish?hotfix_branch

示例

一个完整的分支流程的示例如下:

git?checkout?main 
git?checkout?-b?develop 
git?checkout?-b?feature_branch 
#?work?happens?on?feature?branch 
git?checkout?develop 
git?merge?feature_branch 
git?checkout?main 
git?merge?develop 
git?branch?-d?feature_branch

除了feature流程之外,还有一个 hotfix 示例如下:

git?checkout?main
git?checkout?-b?hotfix_branch 
#?work?is?done?commits?are?added?to?the?hotfix_branch 
git?checkout?develop 
git?merge?hotfix_branch 
git?checkout?main 
git?merge?hotfix_branch

参考

Gitflow Workflow | Atlassian Git TutorialA deep dive into the Gitflow Workflow. Learn if this Git workflow is right for you and your team with this comprehensive tutorial.https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow#:~:text=Gitflow%20is%20a%20legacy%20Git,software%20development%20and%20DevOps%20practices.icon-default.png?t=M276https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow#:~:text=Gitflow%20is%20a%20legacy%20Git,software%20development%20and%20DevOps%20practices.

  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-03-30 18:46:03  更:2022-03-30 18:46:32 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 4:23:45-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码