Git分支与Git标签的介绍及其场景应用

目录

一、Git分支

1.1 定义

1.2 基本概念

1.3 特点与优势

1.4 Git分支操作命令

1.4.1 查看分支

1.4.2 创建分支

1.4.3 删除分支

1.4.4 切换分支

1.4.5 创建并切换到新建分支

1.5 场景应用

1.5.1 前期准备

1.5.2 具体操作

二、Git标签

2.1 定义

2.2 类型

2.3 标签命令

2.3.1 创建标签

2.3.2 查看标签

2.3.3 进入标签(切换到标签所指向的提交):

2.3.4上传标签(推送标签到远程仓库)

2.3.5 删除标签 

2.4 标签规范

2.5 场景应用

三、收获

 


一、Git分支

1.1 定义

  • 在Git中,分支(Branch)是一种用来表示项目工作进程的引用,它指向某次提交(commit),并且包含了该提交及其所有父提交的快照。
  • 分支的存在使得可以在同一代码库中同时进行多个不同的工作,而不会相互影响。每个分支都代表了项目的一个独立线条,开发者可以在不同的分支上进行独立的开发、测试和实验。

1.2 基本概念

以下是一些关于Git分支的基本概念:

1. 主分支(Master/Main):

  • 主分支通常是项目的主要分支,包含了稳定和可发布的代码。
  • 在一些新的项目中,可能使用"main"作为主分支的名称,而在传统项目中,使用"master"作为主分支名称。

2. 创建分支:

  • 使用 git branch 命令可以创建一个新的分支。例如,git branch feature-branch 会创建名为 "feature-branch" 的新分支,但并不会切换到该分支。

3. 切换分支:

  • 使用 git checkout 或者 git switch 命令可以切换到其他分支。例如,git switch feature-branch 将切换到名为 "feature-branch" 的分支。

4. 创建并切换分支:

  • 使用 git checkout -b 或者 git switch -c 命令可以创建并切换到新的分支。例如,git checkout -b new-feature 将创建并切换到名为 "new-feature" 的分支。

5. 查看分支:

  • 使用 git branch 命令可以列出所有本地分支,而 git branch -r 可以列出所有远程分支。

6. 合并分支:

  • 使用 git merge 命令可以将一个分支的更改合并到另一个分支。例如,从主分支合并到特性分支:先切换到特性分支,然后运行 git merge master

7. 删除分支:

  • 使用 git branch -d 命令可以删除已经合并的分支,而 git branch -D 可以强制删除未合并的分支。

8. 远程分支:

  • 远程分支是存在于远程仓库的分支。可以使用 git fetch 更新远程分支信息,然后使用 git checkout 或者 git merge 切换到或合并远程分支。

9. 推送分支:

  • 使用 git push 命令可以将本地分支推送到远程仓库。例如,git push origin feature-branch 将本地的 "feature-branch" 推送到远程仓库的同名分支。

10. 拉取分支:

  • 使用 git pull 命令可以从远程仓库拉取分支并合并到当前分支。

1.3 特点与优势

Git分支具有许多特点和优势,使得它成为版本控制系统中强大而灵活的工具。以下是Git分支的一些主要特点和优势:

  1. 并行开发:

    • 分支允许开发者同时处理多个任务,每个任务都可以在独立的分支上进行。这使得团队能够并行开发不同的功能、修复不同的bug,而不会互相干扰。
  2. 独立实验:

    • 可以创建一个新的分支来尝试新的想法或实验性的开发,而不会影响主干代码。如果实验成功,可以将分支合并回主干;如果失败,可以轻松地放弃分支。
  3. 任务隔离:

    • 每个分支都代表一个独立的工作线条,因此可以在不同的分支上进行不同任务的开发,而不必担心它们之间的冲突。这提高了代码的可维护性和开发效率。
  4. 快速切换:

    • 可以轻松地在不同的分支之间切换,使得开发者能够灵活地切换到不同的工作上下文。这是通过使用 git checkout 或 git switch 命令实现的。
  5. 版本历史清晰:

    • 分支的使用可以使版本历史变得更加清晰。每个分支都有自己的提交历史,合并时也会保留有关分支的信息,使得项目的演进更易于理解。
  6. 风险分散:

    • 在主分支上进行重大更改可能会带来一些风险,但使用分支可以将这些更改隔离在一个单独的分支上,直到它们经过充分测试并准备好合并。
  7. 团队协作:

    • 团队成员可以在各自的分支上进行独立的工作,然后定期将其更改合并到主分支。这种方式有助于减少合并冲突,并促进团队协作。
  8. 临时修复:

    • 可以创建一个临时的分支来修复紧急的bug,而不必影响正在进行的其他开发工作。修复完成后,可以将该分支合并回主分支。

1.4 Git分支操作命令

 Gitee新建仓库:

初始化readme文件:

复制SSH地址:

打开Git Bash进行克隆:

1.4.1 查看分支

命令如下:

git branch

1.4.2 创建分支

git branch 分支名

1.4.3 删除分支

git branch -d 分支名

注:在当前分支下不能删除当前分支 

1.4.4 切换分支

git checkout 分支名

当然,切换分支跟删除分支可以联立起来一起使用,即没有当前分支的情况下切换到新建的分支。

1.4.5 创建并切换到新建分支

git checkout -b 分支名

1.5 场景应用

案例假想:

人员:

  • 开发人员
  • 测试人员

场景:

  • 假设在正式环境下,开发人员在正式环境开发了十个功能模块(此处我们用十个java文件来进行模拟),但是实际上只有六个模块功能能够正常使用,而剩余的其他四个模块功能有问题,不能正常使用。那么此时开发人员开发的十个模块因为只有六个能用,所以将这六个模块打包进行测试(这里即交给Git进行管理)。

1.5.1 前期准备

在项目目录下新建十个文件,代表上述所说的十个功能模块,如下:

1.5.2 具体操作

Person1-6是没有问题的模块,7-10是有问题的模块。即:

使用gui打开图形操作界面,右键点击Git GUI 。点击文件图标,将前六个模块交给Git管理:

因Person1-6功能无问题,将Person1-6提交到测试环境中进行测试,

输入命令 git commit -am "六个模块功能完成,加入测试环境进行测试",如下

 提交完之后,开发环境中,就只能看到剩余未提交的有功能性问题的模块了,如下:

之后,我们进入到测试环境中,在本地的文件夹中是看不到在测试环境中的文件的,

输入命令进入测试环境 :  git checkout ceshi

更换到测试环境后(此时测试环境上是没有任何代码的),如下:

  • 那么这里可能有人就要问了,为什么在测试环境下,本地资源文件看到的却是开发人员未提交的有问题的功能模块呢?

因为这四个有问题的功能模块是未暂存的,不属于任何分支。

那么测试人员要想测试,就必须先将开发分支上的代码合并到测试分支上去,才能进行测试,输入命令:git merge kaifa , 如下:

 

测试完成后,我们进入到开发环境中,将开发环境作为一个分支上传到远程仓库中,

命令 :  git checkout kaifa   ( 进入开发环境 )

命令 :  git push origin kaifa  ( 将开发环境作为一个分支上传到远程仓库中 )

具体操作如下:

然后我们再进入到测试环境中,将测试环境作为一个分支上传到远程仓库中,

命令 :  git checkout ceshi( 进入测试环境 )

命令 :  git push origin ceshi( 将测试环境作为一个分支上传到远程仓库中 )

具体操作如下:

上传后,在远程仓库中的这个分支里,就可以看到当时测试环境的所有模块及代码和文件。

二、Git标签

2.1 定义

在Git中,标签(Tag)是用于标记特定提交的引用。它是一个指向某个特定提交的不可变的引用,通常用于标识版本发布或其他重要的里程碑。与分支不同,标签通常不会移动,因此它是一个静态的指针,永远指向特定的提交。

2.2 类型

标签在Git中有两种主要类型:

  • 轻量标签(Lightweight Tag)
  • 附注标签(Annotated Tag)

2.3 标签命令

2.3.1 创建标签

git tag   <tag_name>      # 创建一个轻量标签,标签名称 : <tag_name>
git tag -a  <tag_name>  -m "tag message"   #创建一个带注释的标签

2.3.2 查看标签

git tag        # 列出所有标签

2.3.3 进入标签(切换到标签所指向的提交):

git checkout <tag_name>      # 切换到名为<tag_name>的标签所指向的提交

2.3.4上传标签(推送标签到远程仓库)

git push origin  <tag_name>     # 将名为<tag_name>的标签推送到远程仓库
git push --tags                           # 将所有本地标签推送到远程仓库

2.3.5 删除标签 

git tag -d <tag_name>    # 将名为<tag_name>的标签删除

git push origin :refs/tags/<tag_name>    # 将在远程仓库名为<tag_name>的标签删除

2.4 标签规范

在 Git 中,标签的命名规范可以根据个人或团队的习惯来制定,但是一般来说,建议遵循以下规范:

  • 标签名应该简短、有意义,并且能够清晰地表达该标签所代表的含义。
  • 标签名应该使用英文单词,可以包含数字和连字符(-),但是不要包含空格或其他特殊字符。
  • 如果要创建一个版本号标签,建议使用语义化版本号(Semantic Versioning,简称 SemVer)规范,格式为 `v1.0.0.20231111`,其中 v1表示主版本号,第一个0表示次版本号,第二个0表示修订号,20231111表示日期。
  • 如果要创建一个带注释的标签,建议在注释中包含该标签的详细信息,例如该版本的功能特性、修复的 bug、重要的变更等。

 补充:

语义化版本号后可以再加个.xxx后缀,如后缀为 :

  • .alpha 表示开发环境
  • .beta 表示测试环境
  • .rc  表示灰度环境
  •  .r  表示生成环境

这些规范旨在提高标签的可读性和管理性,确保团队成员能够轻松地理解标签的目的和含义。选择适合项目需求的标签规范,并在整个团队中强调一致性,有助于更好地组织和维护版本信息。

2.5 场景应用

进入开发环境(kaifa),创建一个相对开发环境的标签,并且上传到自己的远程仓库,命令如下:

命令 :  git checkout kaifa( 进入开发环境 )

命令 :  git tag v1.0.0.20231111.alpha   ( 创建标签 )

命令 :  git push origin v1.0.0.20231111.alpha  ( 将标签上传到远程仓库 )

具体操作如下:

上传后,在远程仓库汇中就可以看到该标签,并且标识上传的开发环境的分支。

进入生成环境(master),创建一个相对生成环境的标签,并且上传到自己的远程仓库,命令如下:

命令 :  git checkout master  ( 进入生成环境 )

命令 :  git tag v2.0.0.20231111.r  ( 创建生成环境标签 )

命令 :  git push origin v2.0.0.20231111.r  ( 上传到远程仓库 )

具体操作如下:

然后我们回到Gitee码云查看远程仓库是否有这两个标签。如下:

在远程仓库中可以看到已上传的两个标签。

注:

如果发现,上传到远程仓库的标签有误,需要删除。具体操作顺序如下:

我们需要先将本地的标签进行删除,在将远程仓库的标签删除才可。

删除标签命令如下: 

命令 : git tag -d v2.0.0.20231111.r   ( 将本地的标签删除 )

命令 : git push origin :refs/tags/v2.0.0.20231111.r  ( 将远程仓库标签删除 )

 具体操作如下:

在Gitee码云远程仓库中可以看到生成环境的标签已经删除,如图 : 

三、收获

学习Git分支和标签是使用Git进行版本控制的关键部分,对于个人开发者和团队来说都是非常有益的。以下是学习Git分支与标签给我带来的一些主要收获:

Git分支:

  1. 并行开发: 了解如何使用分支使得团队能够在同一时间内独立地开发不同的功能或修复不同的问题,从而提高开发效率。

  2. 特性分支: 学会使用特性分支,使得每个新功能或变更都有一个专门的分支,便于跟踪和管理。

  3. 分支合并: 理解分支合并的概念,学会如何将一个分支的更改合并到另一个分支,确保代码的完整性和一致性。

  4. 冲突解决: 了解并学会解决分支合并中可能发生的冲突,学会使用工具或手动解决冲突。

  5. 远程分支: 了解如何与远程仓库同步分支,包括推送本地分支到远程仓库以及拉取远程分支到本地。

  6. 分支管理策略: 了解和选择适合项目的分支管理策略,如Git Flow等,以便更好地组织和协调团队的工作。

Git标签:

  1. 版本发布: 学会使用标签来标记项目的重要版本发布,使得每个发布都有一个清晰的标识。

  2. 语义化版本控制: 了解语义化版本控制(Semantic Versioning)的概念,并学会如何使用标签来遵循版本号规范。

  3. 标签注释: 学会使用附注标签并添加有意义的注释,以便在查看标签历史时了解每个版本的变更和目的。

  4. 标签的推送与删除: 学会将本地标签推送到远程仓库,以及在需要的情况下删除本地和远程的标签。

  5. 版本回滚: 了解如何使用标签来回滚到特定版本,以处理紧急问题或回退到稳定的版本。

  6. 团队协作: 学会在团队协作中合理使用标签,以便整个团队能够清晰地了解项目的版本历史和状态。

通过学习这些Git分支和标签的概念和技巧,你将能够更高效地进行代码管理、团队协作,并更好地组织项目的版本历史。这些技能对于任何使用Git进行版本控制的开发者都是非常重要的。


最后Git分支与Git标签的介绍及其场景应用就到这里,祝大家在敲代码的路上一路通畅!

感谢大家的观看 !

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

C# Socket通信从入门到精通(8)——单个异步TCP服务器监听多个客户端C#代码实现

前言: 我们在C# Socket通信从入门到精通(7)——单个异步TCP服务器监听单个客户端C#代码实现这篇文章中讲述了一个服务器如何与一个客户端进行交互,但是有时候我们需要一个服务器与多个客户端进行交互,这时候上一篇文章介绍的方法就不足以实现这个功能,本篇文章就是介绍如…

advanced-css: No.1

本套教程学习来自视频&#xff1a;https://www.bilibili.com/video/BV1n94y1o7yS/?p7&spm_id_frompageDriver&vd_sourceb79be8283df9418cb45941cc0bd583c6 案例 实现效果图 代码 HTML: <!DOCTYPE html> <html lang"en"><head><meta c…

【C++破局】泛型编程|函数模板|类模板

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;c模板初阶知识点讲解 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;花有重开日&#xff0c;人无再少年 目录 前言 泛型编程 函数模板 函数模…

Leetcode—50.Pow(x,n)【中等】

2023每日刷题&#xff08;二十七&#xff09; Leetcode—50.Pow(x,n) 实现代码 double recurPow(double x, long long n) {if(n 1) {return x;}double res recurPow(x, n / 2);if(n % 2 1) {return x * res * res;} else {return res * res;} }double myPow(double x, int…

从0开始python学习-34.pytest常用插件

目录 1. pytest-html&#xff1a;生成HTML测试报告 2.pytest-xdist&#xff1a;并发执行用例 3. pytest-order&#xff1a;自定义用例的执行顺序 4. pytest-rerunfailures&#xff1a;用例失败时自动重试 5. pytest-result-log:用例执行结果记录到日志文件 1. pytest-html…

C进阶-编译环境与预处理

本章重点&#xff1a; 程序的翻译环境 程序的执行环境 详解&#xff1a;C语言程序的编译链接 预定义符号介绍 预处理指令#define 宏和函数的对比 预处理操作符#和##的介绍 命令定义 预处理指令#include 预处理指令#undef 条件编译 1. 程序的翻译环境和执行环境 在ANSI C的任何一…

江西开放大学引领学习新时代:电大搜题助力学子迈向成功

江西开放大学&#xff08;简称江西电大&#xff09;一直以来致力于为学子提供灵活便捷的学习服务。近年来&#xff0c;携手电大搜题微信公众号&#xff0c;江西开放大学以其卓越的教学质量和创新的教学手段&#xff0c;为广大学子开启了一扇通向成功的大门。 作为一家知名的远…

2.如何实现API统一响应-web组件篇

文章目录 1. 统一响应1.1 CommonResult 1. 统一响应 前端调用api接口获得统一的响应&#xff1a; 成功&#xff0c;返回成功的状态码和数据&#xff1b;失败&#xff0c;返回失败的状态码和错误提示。 在标准的 RESTful API 的定义&#xff0c;是推荐使用 HTTP 响应状态码 (…

物联网AI MicroPython学习之语法 network网络配置模块

学物联网&#xff0c;来万物简单IoT物联网&#xff01;&#xff01; network介绍 模块功能&#xff1a; 用于管理Wi-Fi和以太网的网络模块参考用法&#xff1a; import network import time nic network.WLAN(network.STA_IF) nic.active(True) if not nic.isconnected():…

栈和队列:栈

栈的概念&#xff1a; 栈&#xff1a; 一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶&#xff0c;另一端称为栈底。 栈中的数据元素遵守后进先出LIFO&#xff08;Last In First Out&#xff09;的原则。…

如何爬取 python 进行多线程跑数据的内容

下是一个使用 Rust 编写的爬虫程序&#xff0c;用于爬取 python 进行多线程跑数据的内容。这个爬虫使用代理信息进行网络请求&#xff0c;并使用了 Rust 的 async-std 库进行异步编程。 use async_std::net::{TcpStream, TcpListener}; use async_std::io::{BufReader, BufWri…

grpc使用教程

准备 1&#xff0c;安装grpc go get -u google.golang.org/grpc2, 安装go语言protobuf生成器protoc-gen-go go get -u google.golang.org/protobuf/cmd/protoc-gen-go3, 通过下面连接&#xff0c;找到合适版本并安装protoc工具&#xff0c;如windows选择 protoc-3.19.5-win64.…

指标体系:洞察变化的原因

一、指标概述 指标体系是指根据运营目标&#xff0c;整理出可以正确和准确反映业务运营特点的多个指标&#xff0c;并根据指标间的联系形成有机组合。 指标体系业务意义极强&#xff0c;所有指标体系都是为特定的业务经营目的而设计的。指标体系的设计应服从于这种目的&#x…

从0开始python学习-33.夹具@pytest.fixture(scope=““,params=““,autouse=““,ids=““,name=““)

目录 1. 创建夹具 1.1 pytest方式 1.2 unittest方式 2. 使用夹具 2.1 通过参数引用 2.2 通过函数引用 3. 参数详解 3.1 scope&#xff1a;作用域 3.2 params-参数化 3.3 autouseTrue表示自动使用&#xff0c;默认为False 3.4 ids&#xff1a;设置变量名 3.5 name&am…

电脑版微信收到的图片怎么样自动保存到指定文件夹中?

8-5 在平时的工作中&#xff0c;如果你每天都需要接收并保存很多同事发来的图片&#xff0c;如何实现自动保存在微信上接收到的图片呢&#xff1f;本文的方法也许适合你&#xff0c;它可以自动把微信上收到的图片、视频、文件帮你保存到指定地方&#xff0c;可以大大地提高工作…

算法之双指针

双指针算法的作用 双指针算法是一种使用2个变量对线性结构(逻辑线性/物理线性)&#xff0c;进行操作的算法&#xff0c;双指针可以对线性结构进行时间复杂度优化&#xff0c;可以对空间进行记忆。 双指针算法的分类 1.快慢指针 2.滑动窗口 3.左右指针 4.前后指针 双指针OJ题目…

优秀智慧园区案例 - 中建科技产业园(中建·光谷之星),万字长文解析先进智慧园区建设方案经验

一、项目背景 中建科技产业园&#xff08;中建光谷之星&#xff09;&#xff0c;位于武汉光谷中心城、中国&#xff08;湖北&#xff09;自贸试验区武汉片区双核心区&#xff0c;光谷发展主轴高新大道北侧&#xff0c;建筑面积108万平米&#xff0c;是中建三局“中建之星”和“…

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码

基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码 文章目录 基于飞蛾扑火算法优化概率神经网络PNN的分类预测 - 附代码1.PNN网络概述2.变压器故障诊街系统相关背景2.1 模型建立 3.基于飞蛾扑火优化的PNN网络5.测试结果6.参考文献7.Matlab代码 摘要&#xff1a;针对PNN神…

深度解剖Linux权限的概念

> 作者简介&#xff1a;დ旧言~&#xff0c;目前大二&#xff0c;现在学习Java&#xff0c;c&#xff0c;c&#xff0c;Python等 > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;牢记Linux权限的概念。 > 毒鸡汤&#xff1a;你…

ftp服务器(filezilla服务端软件)下载、安装、使用

下载 通过360软件管家下载 输入filezilla&#xff0c;点击搜索&#xff0c;点击安装 修改安装路径 等待安装完成 配置服务端 启动配置 双击打开&#xff0c;点击软件中间按钮 不用输入密码&#xff0c;因为安装的时候没有设置密码 如果在安装的时候设置了密码&#xff0c;…