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.mzph.cn/news/140040.shtml

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

相关文章

不知不觉已经在CSDN上发文200篇了...

一:大神推荐 认真的推荐一下我认识的大神, 也是我的良师益友: 孙哥链接:孙哥个人主页 大神简介:孙帅,前Oracle高级架构师,技术图书作者,18年软件开发经验。只做精品视频,…

分布式理论基础:CAP定理

什么是CAP CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性)这三个基本需求,最多只能同时…

Unity Mirror学习(二) Command特性使用

Command(命令)特性 1,修饰方法的,当在客户端调用此方法,它将在服务端运行(我的理解:客户端命令服务端做某事;或者说:客户端向服务端发消息,消息方法&#xff…

几种解决mfc140.dll文件缺失的方法,电脑提示mfc140.dll怎么办

电脑提示mfc140.dll缺失,如果你不去处理的话,那么你的程序游戏什么都是启动不了的,如果你想知道有什么方法可以解决那么可以参考这篇文章进行解决,今天给大家几种解决mfc140.dll文件缺失的方法。电脑提示mfc140.dll也不用担心解决…

Qt贝塞尔曲线

目录 引言核心代码基本表达绘制曲线使用QEasingCurve 完整代码 引言 贝塞尔曲线客户端开发中常见的过渡效果,如界面的淡入淡出、数值变化、颜色变化等等。为了能够更深的了解地理解贝塞尔曲线,本文通过Demo将贝塞尔曲线绘制出来,如下所示&am…

基于SSM的数据结构课程网络学习平台

末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:Vue 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目:是 目录…

力扣刷题第十七天--哈希表篇

前言 本题与「15. 三数之和」相似,解法也相似。 内容 一、四数之和 18.四数之和 给你一个由 n 个整数组成的数组 nums ,和一个目标值 target 。请你找出并返回满足下述全部条件且不重复的四元组 [nums[a], nums[b], nums[c], nums[d]] (…

Java,多线程,线程的同步机制

线程的安全问题与线程的同步机制 以火车站买票的问题来举例。假设火车站有100张票,分三个窗口售卖这一百张票。 分别用继承Thread类和实现Runnable接口的方式: 实现Runnable接口: public class WindowTest {public static void main(Stri…

Git系列之分支与标签的使用及应用场景模拟

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是君易--鑨,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的博客专栏《Git实战开发》。🎯🎯 &a…

Java学习_对象

对象在计算机中的执行原理 类和对象的一些注意事项 this关键字 构造器 构造器是一种特殊的方法 : 特殊之处在于,名字必须与所在类的名字一样,而且不能写返回值类型 封装 封装的设计规范:合理隐藏、合理暴露 实体类 成员变量和局部变量的区别 …

mybatisPlus update更新部分字段

第一种方式&#xff1a; 其中&#xff0c; lambdaUpdateWrapper.set 表示要更新的字段值。 .eq 则表示 WHERE 条件。 public void updateEntity() {// LambdaUpdateWrapper<TestEntity> lambdaUpdateWrapper new LambdaUpdateWrapper<>();//有些版本可能不兼容上…

微信聊天,收到二维码图片就自动帮你提取出来的方法

10-3 如果你是二维码收集的重度用户&#xff0c;那我非常推荐你好好阅读本文&#xff0c;也许可以帮你解决你的问题&#xff0c;比如做网推的人&#xff0c;需要常年混迹在各种微信群&#xff0c;那如何在各个微信群中收集到群友分享出来的二维码&#xff0c;并且要立即保存出…

SOLID 原则,程序设计五大原则,设计模式

SOLID 是让软件设计更易于理解、更加灵活和更易于维护的五个原则的简称。 单一职责(Single Responsibility Principle)&#xff1a;修改一个类的原因只能有一个。开闭原则(Open/Closed Principle)&#xff1a;对于扩展&#xff0c;类应该是“开放”的&#xff1b;对于修改&…

组件的设计原则

目录 插槽的基本概念 基础用法 具名插槽 使用场景 布局控制 嵌套组件 组件的灵活性 高级用法 作用域插槽 总结 前言 Vue 的 slot 是一项强大的特性&#xff0c;用于组件化开发中。它允许父组件向子组件传递内容&#xff0c;使得组件更加灵活和可复用。通过 slot&…

Python之函数进阶-nonlocal和LEGB

Python之函数进阶-nonlocal和LEGB nonlocal语句 nonlocal:将变量标记为不在本地作用域定义&#xff0c;而是在上级的某一级局部作用域中定义&#xff0c;但不能是全局作用域中定义。 函数的销毁 定义一个函数就是生成一个函数对象&#xff0c;函数名指向的就是函数对象。可…

在 React Router 中使用 JWT

在这篇文章中&#xff0c;我们将探讨 JWT 身份校验与 React 和 React-router 的无缝集成。 我们还将学习如何处理公共路由、受校验保护路由&#xff0c;以及如何利用 axios 库通过身份验证令牌&#xff08;token&#xff09;发出 API 请求。 创建一个 React 项目 使用下方的指…

华为云Ascend310服务器使用

使用华为云服务器 cpu: 16vCPUs Kunpeng 920 内存&#xff1a;16GiB gpu&#xff1a;4* HUAWEI Ascend 310 cann: 20.1.rc1 操作系统&#xff1a;Ubuntu aarch64目的 使用该服务器进行docker镜像编译&#xff0c;测试模型。 已知生产环境&#xff1a;mindx版本为3.0.rc3&a…

keep-alive缓存,三级路由不生效

此文章讲诉在vue中使用keep-alive缓存&#xff0c;三级路由缓存失败处理方案。 一二级路由缓存无任何问题&#xff0c;三级以上就会失败&#xff0c;因此我们在路由守卫中对matched做出如下优化 Router.beforeEach((to, from, next)>{if(to.matched && to.matched.l…

【机器学习】Kmeans聚类算法

一、聚类简介 Clustering (聚类)是常见的unsupervised learning (无监督学习)方法&#xff0c;简单地说就是把相似的数据样本分到一组&#xff08;簇&#xff09;&#xff0c;聚类的过程&#xff0c;我们并不清楚某一类是什么&#xff08;通常无标签信息&#xff09;&#xff0…

【PTE-day07 文件上传2】

1、常见的绕过方式 (1)畸形后缀名绕过 .php、.pht、.php3、.php4、.php5、.php2、.phtml、.pHp、.html、.Htm......(2)双写过滤字符绕过 (3).htaccess文件绕过 <FilesMatch "jpg"> SetHandler application/x-httpd-php