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

git分支和标签

任务

  1. 分支管理
  2. 标签
  3. Git Flow

1 分支管理策略

1.1 分支管理重要性

  1. 团队协作
  2. 维护主分支稳定
  3. 敏捷开发、快速迭代、持续集成

1.2 git分支原理

Git 分支管理是 Git 强大功能之一,能够让多个开发人员并行工作,开发新功能、修复 bug 或进行实验,而不会影响主代码库。一个分支代表一条独立的开发线。使用分支意味着你可以从开发主线上分离开来,然后在不影响主线的同时继续工作。Git 分支实际上是指向更改快照的指针。

2 分支管理操作

1)查看本地分支

git branch

在这里插入图片描述

[!NOTE]

当执行git init时,git会默认创建master分支

git branch -r: 查看远程分支

git branch -a:查看所有本地和远程分支

2)创建分支

git branch develop(分支名)

在这里插入图片描述

3)切换分支

git checkout develop(分支名)

在这里插入图片描述

[!NOTE]

*号表示当前分支

4)在新分支下新建文件并提交

touch test_branch111.txt
git status
git add .
git commit -m "add new file test_branch111 by jerry2222"
git status
ls

在这里插入图片描述

切换回master分支,验证分支变化:

git checkout master
git status
ls

在这里插入图片描述

在列举master分支内容时,不存在test_branch111.txt文件,该文件仅在develop分支下存在。

在这里插入图片描述

[!IMPORTANT]

无论当前在哪个分支下,新建文件,但没有commit到指定分支,则在各个分支下都是可见的,只有提交到当前分支下,其他分支才看不到该文件,也就是commit之前的中间状态各分支都可以决定是否提交到该分支。只有commit才最终决定文件归属哪个分支。

5)分支推送

git push origin develop

在这里插入图片描述

6)合并分支

git checkout master
git branch
git merge develop
git push origin master

[!CAUTION]

分支合并步骤:

1)首先切换到master分支

2)然后使用merge合并分支到当前分支,在合并过程中如果有冲突需要解决冲突,冲突解决方式和没有分支时一样。merge前一定注意当前分支是哪个分支

3)最后推送master分支

挑选提交:

git cherry-pick 命令允许你选择特定的提交并将其应用到当前分支。

git cherry-pick <commit>(提交id)

如果拣选过程中出现冲突,解决冲突后使用 git cherry-pick --continue 继续拣选。

7)删除分支

合并后,如果当前分支已不再需要可以删除分支:

git branch -d develop(删除本地)
git branch (查看本地分支)
git branch -a(查看所有分支,包括本地和远程)
git push origin -d develop(删除远程分支)

[!NOTE]

git branch -D <branchname> 强制删除未合并分支

8)打标签

git tag v1.0(标签名)
git push origin v1.0

[!NOTE]

标签语法:

git tag

如果添加注释需使用-a参数,比如:

git tag -a v1.0

git会打开编辑器让你输入标签注解

给指定提交打标签:

git tag -a v1.0

默认情况下,git push不会推送标签,你需要显示推送标签

git push origin

推送所有标签使用:

git push origin --tags

删除本地标签:

git tag -d

删除远程标签:

git push origin -d

查看标签:

git show

当标签推送到远程后,可以在远程web端(比如gitee)根据标签下载指定阶段的代码:

在这里插入图片描述

3 Git Flow

Git Flow 是一种基于 Git 的分支模型,旨在帮助团队更好地管理和发布软件。由 Vincent Driessen 在 2010 年提出,并通过一套标准的分支命名和工作流程,使开发、测试和发布过程更加有序和高效。

Git Flow 主要由以下几类分支组成:masterdevelopfeaturereleasehotfix

3.1 Git Flow分支模型

分支描述
master永远保持稳定和可发布的状态,每次发布一个新的版本时,都会从 develop 分支合并到 master 分支
develop用于集成所有的开发分支,代表了最新的开发进度,功能分支、发布分支和修复分支都从这里分支出去,最终合并回这里。
feature用于开发新功能,从 develop 分支创建,开发完成后合并回 develop 分支。命名规范:feature/feature-name
release用于准备新版本的发布,从 develop 分支创建,进行最后的测试和修复,然后合并回 developmaster 分支,并打上版本标签,命名规范:release/release-name
hotfix用于修复紧急问题,从 master 分支创建,修复完成后合并回 masterdevelop 分支,并打上版本标签,命名规范:hotfix/hotfix-name

在这里插入图片描述

分支操作原理:

  • Master 分支上的每个 Commit 应打上 Tag,Develop 分支基于 Master 创建。
  • Feature 分支完成后合并回 Develop 分支,并通常删除该分支。
  • Release 分支基于 Develop 创建,用于测试和修复 Bug,发布后合并回 Master 和 Develop,并打 Tag 标记版本号。
  • Hotfix 分支基于 Master 创建,完成后合并回 Master 和 Develop,并打 Tag 1。

3.2 Git Flow初始化

Git Flow已经集成到git bash中,通过git flow init可以直接进行初始化。

在这里插入图片描述

3.3 优缺点

优点:

  • 明确的分支模型:清晰的分支命名和使用规则,使得开发过程井然有序。
  • 隔离开发和发布:开发和发布过程分离,减少了开发中的不确定性对发布的影响。
  • 版本管理:每次发布和修复都会打上版本标签,方便回溯和管理。

缺点:

  • 复杂性:对于小型团队或简单项目,Git Flow 的分支模型可能显得过于复杂。
  • 频繁的合并:在大型团队中,频繁的分支合并可能导致合并冲突增加

Git Flow 是一种结构化的分支管理模型,通过定义明确的分支和工作流程,帮助团队更好地管理软件开发和发布过程。虽然它增加了一定的复杂性,但对于大型项目和团队协作,Git Flow 提供了强大的支持和管理能力。

相关文章:

  • ①EtherCAT/Ethernet/IP/Profinet/ModbusTCP协议互转工业串口网关
  • K8s存储全解析:从临时存储到持久化解决方案的完整指南
  • 探索量子世界的先驱:马克斯・普朗克与普朗克参数
  • 【区块链安全 | 第十七篇】类型之引用类型(一)
  • 数据结构:树的5种存储方案详解(C语言完整实现)
  • 计算机网络 TCP/IP参考模型
  • C++底层学习精进:模板进阶
  • StatefulSet
  • 【算法】将一个数组旋转K步
  • vue 自定义指令
  • Ollama实战指南:本地大模型一键部署与高效使用(2024最新版)
  • 【一起来学kubernetes】30、k8s的java sdk怎么用
  • VLA 论文精读(三)Diffusion Policy: Visuomotor Policy Learning via Action Diffusion
  • sql注入学习
  • 可信数据空间:构筑安全可控数据流通
  • 强制用户裸奔,微软封锁唯一后门操作
  • 使用docker容器搭建本地yum源并及时更新
  • 循环控制的内容
  • [Vue]生命周期
  • JavaScript事件监听
  • 90设计网是干嘛的/青岛网络优化哪家专业
  • 有后台的网站模板/网络销售怎么学
  • 六安论坛六安杂谈/抚顺优化seo
  • 垂直型b2c网站有哪些/网站接广告
  • 浦项建设中国有限公司网站/被忽悠去做网销了
  • 网站制作将栏目分类/百度查询最火的关键词