【Git】Git分支与应用分支Git标签与应用标签

一,Git分支

1.1 理解Git分支

在 Git 中,分支是指一个独立的代码线,并且可以在这个分支上添加、修改和删除文件,同时作为另一个独立的代码线存在。一个仓库可以有多个分支,不同的分支可以独立开发不同的功能,从而可以方便地进行并行开发和测试

Git 的分支可以帮助团队进行并行开发,例如在主分支上开发新功能或修复 bug,同时在其他的分支上进行其他的开发。当准备好一部分更改并且确保这些更改不会破坏主干时,可以将这些更改合并到主分支中

Git 中的分支管理非常灵活,开发者可以在任何分支上添加、修改文件等操作,并随时切换分支。同时,Git 提供了强大的分支操作功能,包括分支创建、分支切换、分支合并等,帮助开发者更好的管理代码分支

1.2 分支在实际中有什么作用

假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完, 不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险

怎么办? 现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作, 而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作

1.3 四个环境以及各自的功能特点

dev(开发环境):开发环境,外部用户无法访问,开发人员使用,版本变动很大

test(测试环境):测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定

pre(灰度环境):灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样

pro(生产环境):生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境

1.4 分支策略

分支策略 在实际开发中,我们应该按照几个基本原则进行分支管理:

1.首先,pro分支(即master)应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活

2.那在哪干活呢?干活都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时, 再把dev分支合并到master上,在master分支发布1.0版本

3.修复bug时,我们会通过创建新的bug分支(即test)进行修复,然后合并,最后删除

4.当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

二 分支的应用

2.1 学习分支命令

首先先来学习以下分支的相关命令,再到后面学习远程仓库问题

1.查看分支

  此命令会列出所有分支,当前分支前面会标一个*号

   git branch //查看本地分支

   git branch -a //查看远程分支

2.创建分支

         git branch name //仅仅保存本地,远程还需要push

         push git push <远程仓库名> <远程分支名>

3.切换分支

     git checkout name

4.创建+切换分支

      git checkout -b name

5.删除分支(分本地和远程)

git branch //查看本地分支

git branch -d name //删除本地分支

git branch -a //查看远程分支

git push origin --delete dev //删除远程分

6.合并某分支到当前分支

     git merge name

 注意:当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成。 使用  用git log --graph命令可以看到分支合并图

2.1 分支命令使用

① 创建远程仓库

打开Gitee官网,并创建一个远程仓库

点击初始化readme文件即可

将刚创建的远程仓库SSH地址复制 

② 克隆远程仓库 

新建文件夹将刚创建远程仓库克隆过来

右击点击 Git Bash Here

执行指令:git clone "SHH地址"

这样远程仓库的就克隆下来了

③ 使用分支命令

cd 远程仓库名   进入刚刚所克隆下来的远程仓库

最后括号中的master代表的是生成坏境

3.1.1 创建分支与查看分支

git branch dev  (创建开发坏境分支)

git branch (查看分支)

3.1.2 删除分支命令

git branch -d name (该name是分支名)

3.1.3 切换分支

 git checkout name  (该name是分支名) 

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

3.1.4 创建+切换分支  

git checkout -b name  (-b是branch缩写 name是分支名)

④ 应用场景模拟

在我们本地仓库中创建8个文件,来模拟在不同的分支坏境中拿到不同的文件

前面我们建立了一个dev为开发坏境,再建立一个text为测试坏境分支

打开Gui图形化界面(没有安装输入相关指令也可以)Git GUI Here

将文件放置到暂存区域

 

使用我们所学的知识 git status 查看该文件状态

红区代表未在暂存区蓝色则相反(刚所提交的文件就是在暂存区域中)

把刚暂存区域的文件,提交到git管理

git commit -am '4个文件加入到测试坏境分支'  

刚刚我们用的dev开发坏境分支,我们所看到的文件还是8个

现在我们切换到测试坏境分支中

 测试坏境中只能看到3个了,也就是在不同的分支中看到的文件等东西也不样

如果将dev 开发坏境分支所提交到git管理的文件在 text测试也能看得到的话,就需要将dev分支与text分支合并在一起

git merge name  (该name是分支名) 

如果没有合并分支的情况下,继续切换到master主支模块,所看的文件又会不一样

text测试员合并dev文件的时候,发现dev所写的代码文件不合格,将刚合并的dev暂存的文件1和2删除了,也commit提交到Git管理中。

继续将master主支分支和text合并,模拟这些代码模块就是要上传到远程仓库的

⑤ 建立本地分支与远程仓库连接

切换到本地dev开发

git checkout dev

将文件上传到远程仓库

git push origin dev  

最后上Gitee,将分支切换成dev

就能看见刚上传的代码文件了 

继续大同小异 切换到text分支中并将文件模块上传

 上Gitee,将分支切换成text发现在刚刚所删除暂存管理的1和2无法上传了,这就是在不同的坏境分支模块中的代码不会影响到其他分支工作

三,Git标签 

3.1 对Git标签的概念

       在Git中,标签(tag)是一种用于对代码库的特定版本进行标记或命名的机制。它通常用于对发布版本、里程碑或重要节点进行标记,以便于后续的版本控制和追踪。

        标签可以看作是一种指向提交记录的引用,它与提交记录关联,并包含标签的名称、日期、标签描述等信息。轻量标签只是一个指向提交对象的引用,不包含任何元数据。带注释的标签则是一个独立的对象,包含了标签的名称、日期、标签描述等信息,以及指向提交对象的引用。

        创建标签的命令是git tag,可以使用该命令创建轻量标签或带注释的标签。标签可以用于对发布版本进行标记、对某一历史版本进行快速跳转、对重要节点进行标记等等。Git标签的最大优点就是不会随着代码的修改而改变,这意味着标签是永久性的,并且可以在未来的任意时刻被检索到

3.2 Git标签命令

列出当前仓库的所有标签:git tag

列出所有标签及说明:git tag -n

搜索符合条件的标签:git tag -l "1.0.*"

查看标签信息:git show v1.0.1

创建标签:git tag "指定标签名"

创建带有说明的标签:git tag -a "指定标签名" -m "指定说明文字"

本地标签推送到远程仓库:git push origin <tagname>

获取指定标签的代码:可以使用git checkout <tagname>

获取指定标签的代码:可以使用git checkout <tagname>

3.3 标签规范

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

① 标签名应该简短、有意义,并且能够清晰地表达该标签所代表的含义

② 标签名应该使用英文单词,可以包含数字和连字符(-),但是不要包含空格或其他特殊字符

③ 如果要创建一个版本号标签,建议使用语义化版本号(Semantic Versioning,简称 SemVer)规范,格式为 `v1.0.0.20231111`,其中 v1表示主版本号,第一个0表示次版本号,第二个0表示修订号,20231111表示日期

v1.0.0.20231111可以再加个.后缀   

              为 : .alpha 表示开发环境
              为 : .beta 表示测试环境

              为 : .rc  表示灰度环境

              为 : .r  表示生成环境

⑤ 如果要创建一个带注释的标签,建议在注释中包含该标签的详细信息,例如该版本的功能特性、修复的 bug、重要的变更等

      总之,标签的命名规范应该清晰、简洁、有意义,并且符合团队或行业的惯例。这样可以帮助我们更好地管理代码历史,提高代码的可读性和可维护性

3.4 应用场景

3.4.1 上传标签

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

指令 :  git checkout dev  ( 进入开发环境 )

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

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

上我们的Gitee远程仓库看效果,点击标签就能看见我们刚所上传的标签

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

指令 :  git checkout master( 进入生产环境 )

指令 :  git tag v2.0.0.20231111.r  ( 创建标签 )

指令 :  git push origin v2.0.0.20231111.r ( 将标签上传到远程仓库 )

 上我们的Gitee远程仓库看效果,点击标签就能看见我们刚所上传的标签

 3.4.2 删除标签

要删除远程仓库,必须先把本地标签删除

模拟删除master(远程仓库)标签删除

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

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

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

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

相关文章

【yolov5】onnx的INT8量化engine

GitHub上有大佬写好代码&#xff0c;理论上直接克隆仓库里下来使用 git clone https://github.com/Wulingtian/yolov5_tensorrt_int8_tools.git 然后在yolov5_tensorrt_int8_tools的convert_trt_quant.py 修改如下参数 BATCH_SIZE 模型量化一次输入多少张图片 BATCH 模型量化…

操作系统(二)内存管理的基础知识

文章目录 前言内存管理地址空间与地址生成连续内存分配内存碎片连续分配算法碎片整理 非连续内存分配虚拟内存管理虚拟内存地址内存分段内存分页段页式内存管理虚拟内存的覆盖技术虚拟内存的交换技术 缺页异常内存页面置换算法局部页面置换算法Belady现象全局页面置换算法抖动和…

Mybatis-Plus入门

Mybatis-Plus入门 MyBatis-Plus 官网&#xff1a;https://mp.baomidou.com/ 1、简介 MyBatis-Plus (简称 MP) 是一个 MyBatis 的增强工具&#xff0c;在 MyBatis 的基础上只做增强不做改变&#xff0c;为简化开发、 提高效率而生。 https://github.com/baomidou/mybatis-p…

【MySQL系列】第二章 · SQL(上)

写在前面 Hello大家好&#xff0c; 我是【麟-小白】&#xff0c;一位软件工程专业的学生&#xff0c;喜好计算机知识。希望大家能够一起学习进步呀&#xff01;本人是一名在读大学生&#xff0c;专业水平有限&#xff0c;如发现错误或不足之处&#xff0c;请多多指正&#xff0…

深入理解强化学习——多臂赌博机:知识总结

分类目录&#xff1a;《深入理解强化学习》总目录 我们在《深入理解强化学习——多臂赌博机》系列文章中介绍了几种平衡试探和开发的简单方法。 ϵ − \epsilon- ϵ−贪心方法在一小段时间内进行随机的动作选择&#xff0c;而UCB方法虽然采用确定的动作选择&#xff0c;却可以通…

Leetcode100128. 高访问员工

Every day a Leetcode 题目来源&#xff1a;100128. 高访问员工 解法1&#xff1a;模拟 把名字相同的员工对应的访问时间&#xff08;转成分钟数&#xff09;分到同一组中。 对于每一组的访问时间 accessTime&#xff0c;排序后&#xff0c;判断是否有 accessTime[i] - ac…

吃透 Spring 系列—Web部分

目录 ◆ Spring整合web环境 - Javaweb三大组件及环境特点 - Spring整合web环境的思路及实现 - Spring的web开发组件spring-web ◆ web层MVC框架思想与设计思路 ◆ Spring整合web环境 - Javaweb三大组件及环境特点 在Java语言范畴内&#xff0c;web层框架都是基于J…

win环境Jenkins部署前端项目

今天分享win环境Jenkins部署前端vue项目&#xff0c;使用的版本jenkins版本Jenkins 2.406版本。 前提是jenkins安装好了&#xff0c;通用配置已经配置好了&#xff0c;可以参考上两篇博客。 1、前端项目依赖nodejs&#xff0c;需要安装相关插件 点击进入 安装成功标准 jenki…

【Vue3】scoped 和样式穿透

我们使用很多 vue 的组件库&#xff08;element-plus、vant&#xff09;&#xff0c;在修改样式的时候需要进行其他操作才能成功更改样式&#xff0c;此时就用到了样式穿透。 而不能正常更改样式的原因就是 scoped 标记。 scoped 的渲染规则&#xff1a; <template>&l…

如何在ModelScope社区魔搭下载所需的模型

本篇文章介绍如何在ModelScope社区下载所需的模型。 若您需要在ModelScope平台上有感兴趣的模型并希望能下载至本地&#xff0c;则ModelScope提供了多种下载模型的方式。 使用Library下载模型 若该模型已集成至ModelScope的Library中&#xff0c;则您只需要几行代码即可加载…

STM32之DMA

一、DMA概述 DMA:直接寄存器访问 Direction:直接 Memory:存储器 Access:访问 就是一个外设用于搬运数据&#xff0c;就是一个搬运工。 在串口发送数据的时候&#xff1a;这种效率并不高 如何想要发送大量的数据的时候可以利用DMA 1、DMA工作流程 没有DMA参与…

【友提】2023年“思维100”编程比赛开始报名,名额有限报名抓紧

根据官方昨天发布的通知&#xff0c;2023年上海市“科学小公民”实践展示活动之“思维100”STEM应用能力编程活动&#xff08;秋季&#xff09;开始报名了&#xff0c;为便于大家了解&#xff0c;六分成长为大家整理关键信息如下。为便于叙述&#xff0c;该活动简称为思维100编…

RGB颜色空间与BMP格式图片

RGB颜色空间 RGB可以分为两大类&#xff1a;一种是索引形式&#xff0c;一种是像素形式&#xff1a; 索引形式&#xff1a;存储每个像素在调色板中的索引 RGB1&#xff1a;每个像素用1bit表示&#xff0c;调色板中只包含两种颜色&#xff08;黑白&#xff09;RGB4&#xff1a…

卸载本地开发环境,拥抱容器化开发

以前在公司的时候&#xff0c;使用同事准备的容器化环境&#xff0c;直接在 Docker 内进行开发&#xff0c;爽歪歪呀。也是在那时了解了容器化开发的知识&#xff0c;可惜了&#xff0c;现在用不到那种环境了。所以打算自己在本地也整一个个人的开发环境&#xff0c;不过因为我…

吴恩达《机器学习》8-3->8-4:模型表示I、模型表示II

8.3、模型表示I 一、大脑神经网络的基本原理 为了构建神经网络模型&#xff0c;首先需要理解大脑中的神经网络是如何运作的。每个神经元都可以被看作是一个处理单元或神经核&#xff0c;它包含多个输入&#xff08;树突&#xff09;和一个输出&#xff08;轴突&#xff09;。…

在vue3中使用Element-plus的图标

首先安装Element-Plus-icon # 选择一个你喜欢的包管理器# NPM $ npm install element-plus/icons-vue # Yarn $ yarn add element-plus/icons-vue # pnpm $ pnpm install element-plus/icons-vue 如何使用 Element-Plus-icon官方文档链接Icon 图标 | Element Plus (element-…

【操作系统】1.1 操作系统的基础概念、功能以及特性

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

Unity之NetCode多人网络游戏联机对战教程(8)--玩家位置同步

文章目录 前言添加相机玩家添加对应组件服务端权威&#xff08;server authoritative&#xff09;客户端权威&#xff08;client authoritative&#xff09;服务端同步位置阅读与理解PlayerTransformSync.csNetworkVariableUploadTransformSyncTransform 后话 前言 承接上篇&a…

LOW-POWER AUDIO KEYWORD SPOTTING USING TSETLIN MACHINES

基于TM的低功耗语音关键字识别 摘要1介绍2TM的介绍3KWS的音频预处理技术4实验结果MFC4.1C设置分位数数量4.3增加关键词数量4.4 声音相似的关键词4.5 每个类别的子句数量对KWS-TM的比较学习收敛和复杂性分析 摘要 在本文中&#xff0c;我们探讨了一种基于TM的关键词识别&#x…

《算法通关村——透彻理解二叉树中序遍历的应用》

《算法通关村——透彻理解二叉树中序遍历的应用》 直接上题 108. 将有序数组转换为二叉搜索树 给你一个整数数组 nums &#xff0c;其中元素已经按 升序 排列&#xff0c;请你将其转换为一棵 高度平衡 二叉搜索树。 高度平衡 二叉树是一棵满足「每个节点的左右两个子树的高…