Git版本控制系统之分支与标签(版本)

目录

一、Git分支(Branch)

1.1 分支作用

1.2 四种分支管理策略

1.3 使用案例

1.3.1 指令 

1.3.2 结合应用场景使用

 

二、Git标签(Tag)

2.1 标签作用

2.2 标签规范

2.3 使用案例

2.3.1 指令

2.3.2 使用示例


一、Git分支(Branch)

        当我们谈论版本控制系统时,分支是一个关键的概念。在 Git 中,分支是用来处理不同代码线路的机制,允许你在项目的不同部分之间工作而不影响主要代码线。

1.1 分支作用

        分支是 Git 中用来处理项目中不同功能或特性的独立线路的工具。它允许你在不影响主要项目的同时进行开发、测试和实验。每个分支都是独立的,修改一个分支不会影响其他分支。

应用场景:

  • 新功能开发: 创建一个新的分支,专注于新功能的开发,而不会影响主分支(通常是master)。
  • Bug 修复: 如果在主分支上发现了 bug,可以在一个新分支上进行修复,而不会中断正在进行的开发。
  • 实验性开发: 为了尝试一些实验性的想法,可以创建一个分支,在上面进行实验,然后决定是否将其合并到主分支。

1.2 四种分支管理策略

在Git中,分支有四个主要的环境,通常被称为四种基本的分支管理策略: 

一、主分支(Master/Main)

  • 作用: 主分支通常是项目的主要分支,包含了当前最稳定、可部署的代码。
  • 应用场景: 当开发新功能或修复 bug 时,通常从主分支创建新的分支进行工作。

二、开发分支(Develop):

  • 作用: 开发分支是用于集成各种功能的主分支。当一个开发周期结束时,开发分支通常会合并到主分支,形成一个稳定的版本。
  • 应用场景: 在开发新功能时,从主分支创建一个新的开发分支,完成开发后再将其合并回开发分支。

三、特性分支(Feature):

  • 作用: 特性分支用于开发单个功能或特性。每个特性都有一个对应的特性分支,使得功能的开发独立于主分支和其他特性。
  • 应用场景: 当需要添加新功能时,从开发分支创建一个新的特性分支,完成开发后将其合并回开发分支。

四、发布分支(Release):

  • 作用: 发布分支用于准备发布新版本。在发布分支上进行最后的测试、文档更新和版本号增加等操作。
  • 应用场景: 当开发周期结束时,从开发分支创建一个新的发布分支,准备发布。发布后,将发布分支合并回主分支和开发分支。

        这些环境提供了一种有效的方式来组织团队的工作流,确保代码的稳定性和可维护性。使用这些环境,可以清晰地了解每个分支的目的和状态,从而更轻松地协作和集成代码。这种分支管理策略通常被称为Git Flow,是一种在软件开发中广泛应用的工作流程。

1.3 使用案例

1.3.1 指令 

# 查看本地分支
git branch # 创建新分支
git branch feature-branch# 切换到新分支
git checkout feature-branch# 或者一步到位(创建+切换)
git checkout -b feature-branch# 合并分支到主分支
git checkout master
git merge feature-branch# 删除已合并的分支
git branch -d # 删除远程分支
git push origin --delete dev   # 提交分支 如果远程没有这个分支他会自动创建这个分支
git push origin feature-branch

1.3.2 结合应用场景使用

主分支(Master/Main): 主分支是项目的默认分支,通常包含了最新的稳定版本。在许多项目中,主分支的名称是 mastermain

1、创建并切换分支:你可以创建一个新的分支,这个分支是从当前工作目录的状态创建的,包含了当前工作目录中的所有文件和文件夹。 

2、在分支上工作: 在特定的分支上工作时,你可以进行修改、添加新文件等操作。这些操作不会影响其他分支,因为每个分支都有独立的工作目录。

测试:新建的两个文件添加都暂存区再提交到本地仓库之后,切换分支会是怎样的效果呢?

切换到master之后,原来添加的文件就消失了

 

3、提交分支

就可在gitee远程仓库中查看了

在此分支开发的代码与其他互不相干了,若开发完成可与主分支进行合并

二、Git标签(Tag)

2.1 标签作用

        标签是一个指向特定提交的引用,通常用于标记版本发布。标签可以使你在不同版本之间轻松切换,而不必记住各个提交的哈希值。

应用场景:

  • 版本发布: 在发布一个稳定版本时,可以为该提交打上标签,以便将来可以轻松地找到和检出该版本。
  • 历史记录标记: 在项目的关键点上打标签,以便于回顾项目的历史记录。

2.2 标签规范

在 Git 中,标签的命名规则相对灵活,但有一些推荐的约定和最佳实践:

  1. 版本号: 最常见的标签是用于表示软件版本的。使用语义化版本号是一种常见的做法,其中版本号包括主版本号、次版本号和修订号,形式为 MAJOR.MINOR.PATCH例如:v1.0.0

  2. 前缀: 通常,标签前面加上字母 'v' 作为版本的前缀是一种常见的做法。例如:v2.1.3

  3. 发布候选(Release Candidate): 有时在软件发布前可能有一些预发布版本,可以使用 -rc 或其他类似的标记。例如:v1.0.0-rc

  4. 修订版或修复版本: 有时可能需要对某个版本进行修复,可以通过在版本号后添加修复版本号,如 v1.0.1

  5. 时间戳: 在某些情况下,可以使用时间戳作为标签,特别是在需要唯一性的情况下。例如:v20220101.

  6. 语义化标签: 使用能够清晰表达标签目的的语义化标签。例如:release-2.0, feature-new-login, 等。

注意事项:

  • 避免使用特殊字符,空格或弱引用字符,以免引起不必要的问题。
  • 标签名称对大小写敏感,因此 v1.0V1.0 是两个不同的标签。
  • 在使用标签时要保持一致性,遵循项目内的约定。

        总体而言,标签的命名规则是由项目的团队来定义的。选择一种清晰、有意义、易于理解的命名约定对于项目的长期维护和协作是非常有帮助的。

2.3 使用案例

2.3.1 指令

# 列出所有标签
git tag# 添加标签
git tag v1.0.0# 附注标签: 包含标签的名称、邮箱、日期和标签消息。它是一个更详细的标签类型。
git tag -a v1.0.0 -m "Version 1.0.0"# 删除标签
git tag -d v1.0.0# 删除远程标签(已推送的标签)
git push origin --delete v1.0.0# 推送标签
git push origin v1.0.0# 如果你有多个标签,可以使用 --tags 选项一次性推送所有标签。
git push origin --tags

 

2.3.2 使用示例

这是一个简单的当前版本代码的标签推送:

推送标签后,其他团队成员可以通过拉取最新的标签来获取项目中的特定版本。例如:

git pull origin v1.0.0.20231112_dev

这将获取远程仓库中的 v1.0 标签,并将你的本地仓库切换到这个版本。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/169881.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gogs安装和部署教程-centos上

0、什么是 Gogs? Gogs 是一款极易搭建的自助 Git 服务。 Gogs 的目标是打造一个最简单、最快速和最轻松的方式搭建自助 Git 服务。使用 Go 语言开发使得 Gogs 能够通过独立的二进制分发,并且支持 Go 语言支持的 所有平台,包括 Linux、Mac OS X、Windo…

Django(三、数据的增删改查、Django生命周期流程图)

文章目录 一、 基于ORM进行的CURDuser_list:作为主页使用路由文件urls.py配置如下:add.html:用于新增用户的数据页add页面视图函数如下:edit.html:修改数据的页面那么来总结一下上序所操作所用到的内容。 导入已存在的表其方式有两…

【黑马程序员】SpringCloud——Eureka

文章目录 前言一、提供者与消费者1. 服务调用关系 二、远程调用的问题三、eureka 原理分析1. eureka 的作用 四、Eureka 案例1. 搭建 eureka 服务1. 服务注册1.1 注册 user-service1.2 启动 user-service3. order-service 完成服务注册 3. 服务发现1. 在 order-service 完成服务…

Leetcode—234.回文链表【简单】

2023每日刷题(二十七) Leetcode—234.回文链表 直接法实现代码 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/ bool isPalindrome(struct ListNode* head) {if(head NULL) {return t…

Stable Diffusion webui 源码调试(三)

Stable Diffusion webui 源码调试(三) 个人模型主页:LibLibai stable-diffusion-webui 版本:v1.4.1 内容更新随机,看心情调试代码~ shared 变量 shared变量,简直是一锅大杂烩,shared变量存放…

Oracle(16)Managing Privileges

目录 一、基础知识 1、Managing Privileges管理权限 2、System Privileges 系统特权 3、System Privileges : Example系统权限:示例 4、Who Can Grant or Revoke? 谁可以授予或撤销权限? 5、The PUBLIC 6、SYSDBA and SYSOPER 7、Revoke with A…

Minio

Minio学习 MinioMinio介绍安装window安装1.下载服务端和客户端文件[地址](https://min.io/download#/windows)2.创建minio相关目录3.启动minio服务方式一方式二4.查看minio版本5.访问minio控制台 linux安装docker安装 Minio Minio介绍 MinIO 是在 Apache License v2.0 下发布…

通过easyexcel导出数据到excel表格

这篇文章简单介绍一下怎么通过easyexcel做数据的导出,使用之前easyui构建的歌曲列表crud应用,添加一个导出按钮,点击的时候直接连接后端接口地址,在后端的接口完成数据的导出功能。 前端页面完整代码 let editingId; let request…

git使用笔记

0.记录使用经验 1.提交和push代码 git add .添加修改 git commit -m "提交日志" git push origin branch_name推送分支名称代码到远程服务器对应分支 1.1日常操作 git status查看仓库状态 git branch查看分支 git branch -a查看所有分支【包含远程】 git checkou…

STM32--EXTI外部中断

一、什么是外部中断? 外部中断是指由微处理器或微控制器外部引脚(通常是GPIO引脚)上的外部事件触发的中断。这些外部事件可以是来自外部设备、传感器或其他外部信号源的触发。 二、外部中断详细内容 由AFIO时钟管理的寄存器有AFIO_EVCR(时…

Dell戴尔灵越Inspiron 7700 AIO一体机电脑原厂预装Windows10系统

链接:https://pan.baidu.com/s/1-slgR9t4Df_eko0Y6xaeyw?pwdmk0p 提取码:mk0p 灵越7700一体机原装出厂系统自带声卡驱动、无线网卡驱动、面部识别等所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、MyDell等预装程序 由于时间关系,…

自定义Graph Component:1-开发指南

可以使用自定义NLU组件和策略扩展Rasa,本文提供了如何开发自己的自定义Graph Component指南。   Rasa提供各种开箱即用的NLU组件和策略。可以使用自定义Graph Component对其进行自定义或从头开始创建自己的组件。   要在Rasa中使用自定义Graph Component&#x…