Git分支与标签(干货!!!)

2023-05-16

目录

一、Git分支

分支的概念:

分支的类别: 

 分支策略:

分支命令:

git操作之pull拉取远程指定分支以及push推送到远程指定分支:

  1.pull操作

2.push操作

二、Tag标签

标签的含义:

Git如何打标签:

标签管理:

查看标签:

创建标签:

删除标签:

三、软件版本阶段说明:

命名规范:

 

 四、分支与版本的关系


一、Git分支

分支的概念:

仓库的分支(Branch)规范,影响到每个团队的工作流的一致性;标签(Tag)便于开发团队、测试团队和其他团队识别每个项目的版本,特别是在协同处理线上问题的时候,大家可以非常清楚地知道线上运行版本和代码库的对应关系。因此我们在制作的时候,主要考虑几个因素:

  1. 一是要有一定的规则,方便持续集成CI(自动化构建、测试、分布等)
  2. 二是要有一定的自由度,以适应不同团队的内部协作灵活性
  3. 要清晰规整,不要参差不齐难以识别
     

分支的类别: 

基于我们当前团队的协作能力和提交代码的质量水平,并考虑方便持续集成CI(自动化构建、
测试、发布),我们约定下列常驻Branch: 四个环境(开发、测试、生产、灰度)

  • develop 分支:顾名思义即持续开发的分支,我们希望每个开发组都在这个分支上保持线性的持续小步迭代,正常的CodeReview WorkFlow和开发级的自动CI也在这里进行。当开发完一个迭代(Sprint),开发小组有信心转测时,就将代码合并到 release 分支,并要求打一个alpha级的Tag(如5.2.0-alpha)
  • release 分支:顾名思义即用于发布过程的分支,包括开发转测(实际上我们认为这里的测试集成测试)、测试和BugFix以及发布上线的过程,当发布成功时要打一个发布beta Tag(如5.2.1-beta),并将代码合并到 master 分支
  • master 分支:即有质量保证的、可安全运行的分支,禁止直接代码提交,避免被污染,仅用于代码合并和归集,在这个分支上的代码应该永远是可用的、稳定的。当需要拉一个特别的开发分时,应该基于 master。
  • pre分支:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。

 分支策略:

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

  • 首先,pro分支(即master)应该是非常稳定的,也就是仅用来发布新版本,平时不能在上面干活;
  •  那在哪干活呢?干活都在develop分支上,也就是说,develop分支是不稳定的,到某个时候,比如1.0版本发布时, 再把develop分支合并到master上,在master分支发布1.0版本
  • 修复bug时,我们会通过创建新的bug分支(即release)进行修复,然后合并,最后删除;
  • 当手头工作没有完成时,先把工作现场git stash一下,然后去修复bug,修复后,再git stash pop,回到工作现场

分支命令:

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

  •      git branch           //查看本地分支
  •      git branch -a        //查看远程分支

可以看出原始只有一个分支master

   2.创建分支

  •      git branch name      //仅仅保存本地,远程还需要push
  •      git push <远程仓库名> <远程分支名>

 

 远程仓库中不存在dev这个分支,但是当你推送时,gitee会自动为你创建dev这个分支

     
   3.切换分支

  •      git checkout name

   4.创建+切换分支

  •      git checkout -b name

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

  •      git merge name

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

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

  •      git branch                      //查看本地分支
  •      git branch -d name              //删除本地分支
  •      git branch -a                  //查看远程分支
  •      git push origin --delete dev   //删除远程分支

   7.重命名本地分支,并提交到远程

  •     重命名   git branch -m oldBranchName newBranchName
  •     删除远程分支 git push origin :oldBranchName
  •    将重命名过的分支提交git push origin newBranchName
  •    git branch -m 要改的本地分支名 修改后的分支名(修改本地分支)
  1.    git push origin :远程修改前的分支名(删除远程分支)
  2.    git push origin 修改后的分支名:修改后的分支名(push 到远程分支)
  3.  git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支

git操作之pull拉取远程指定分支以及push推送到远程指定分支:

  1.pull操作

  •      将远程指定分支 拉取到 本地指定分支上 git pull <远程仓库名> <远程分支名>:<本地分支>
  •      将远程指定分支 拉取到 本地当前分支上      git pull <远程仓库名> <远程分支名>
  •      将与本地当前分支同名的远程分支 拉取到 本地当前分支上     git pull <远程仓库名>

  在克隆远程项目的时候,本地分支会自动与远程分支建立追踪关系,可以使用默认的origin来替代远程仓库名,
     所以,我常用的命令就是 git pull origin <远程仓库名>,操作简单,安全可控。

2.push操作

  •      将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反)

    git push <远程仓库名> <本地分支名>:<远程分支名>

  •      将本地当前分支 推送到 远程指定分支上

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

  •      将本地当前分支 推送到 与本地当前分支同名的远程分支上

       git push <远程仓库名>

     推荐使用第2种方式,git push origin <远程分支名> !!!!!!

二、Tag标签

标签的含义:

   Tag格式: 主版本号.次版本号.修订号-类型标签,其中类型标签可为:alpha、beta、rc、r。
     Tag示例:1.0.0-alpha、1.0.0-beta、1.0.0-rc、1.0.0-r

     注1:有的公司在版本命名时,前面加v,“-”替换成“_”,更加详细一点还可以在修订号后面添加发布日期
          v1.0.0.191220_r,这都是可以的

Git如何打标签:

  发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本。
   将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来。所以,标签也是版本库的一个快照

标签管理:

查看标签:

git show <tagname>查看标签信息

创建标签:

 1.首先,切换到需要打标签的分支上,例如:dev,再创建标签
       git branch
       git checkout dev
       git tag 1.0.0-alpha

  2.推送标签到远程
       git push origin 1.0.0-alpha
       注1:因为创建的标签都只存储在本地,不会自动推送到远程,还需要手动推送

 3.git标签分为两种类型:轻量标签和附注标签,区别:附注标签带注解
       git tag 1.0.0-alpha                         //创建轻量标签
       git tag -a 1.0.0-alpha -m "一期开发完成"    //创建附注标签

    一般推荐打带附注信息的标签,这样可以最大限度查看标签版本的修改情况

删除标签:

1.删除本地tag
       git tag -d 1.0.0-alpha
       注1:因为创建的标签都只存储在本地,不会自动推送到远程。所以,标签可以在本地直接删除

     2.删除远程tag
       1.如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除
         git tag -d 1.0.0-alpha
       2.然后,再从远程删除。删除命令也是push,但是格式如下:
         git push origin :refs/tags/1.0.0-alpha

三、软件版本阶段说明:

  1.Base版:
    此版本表示该软件仅仅是一个假页面链接,通常包括所有的功能和页面布局,但是页面中的功能都没有做完整的实现,
    只是做为整体网站的一个基础架构

  2.Alpha版: 
    此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,
    该版本软件的Bug较多,需要继续修改

  3.Beta版: 
    该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,
    需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI

  4.RC版: 
    该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几

  5.Release版: 
    该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。
    该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。

命名规范:

  软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号加希腊字母版本号,
  希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.1.1.051021_beta。

 

 四、分支与版本的关系

     dev-->alpha  开发环境
     test-->beta   测试环境
     pre-->rc   灰度环境
     pro-->r   生产环境

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Git分支与标签(干货!!!) 的相关文章

随机推荐

  • 正点原子FreeRTOS手把手教学-基于STM32视频

    正点原子FreeRTOS手把手教学 基于STM32 哔哩哔哩 bilibili
  • 谷歌浏览器下载、安装、配置。(保姆级详细教程。)

    1 xff0c 首先找一个你电脑已经自带了的浏览器 然后打开浏览器 2 xff0c 在浏览器里面的搜索框输入谷歌浏览器 然后进行搜索 找到带有官方标志的网址点击进去 xff08 优先选官网下载 xff0c 因为非官网的有时候会带有捆绑软件或
  • 饿了么神级UI组件库——Element-UI使用指南

    1 Element UI介绍 element ui 是饿了么前端出品的基于 Vue js的 后台组件库 xff0c 方便程序员进行页面快速布局和构建 Element UI官方站点 xff1a https element eleme cn z
  • get请求和post请求的区别(全面讲解)

    1 get请求一般是去取获取数据 xff08 其实也可以提交 xff0c 但常见的是获取数据 xff09 xff1b post请求一般是去提交数据 2 get因为参数会放在url中 xff0c 所以隐私性 xff0c 安全性较差 xff0c
  • vscode 脑图插件mindmap

    在日常办公中 xff0c 我们经常使用脑图工具来说明一个复杂的 事情 xff0c 百度提供了一个在线的脑图工具 xff0c https naotu baidu com 今天 xff0c 我们来看下vscode中如何通过安装插件 xff0c
  • Android Studio 实现登录注册-源代码 (连接MySql数据库)

    Android Studio 实现登录注册 源代码 xff08 连接MySql数据库 xff09 Android Studio 实现登录注册 源代码 二 xff08 Servlet 43 连接MySql数据库 xff09 Android S
  • PX4无人机-Gazebo仿真实现移动物体的跟踪

    原文链接PX4无人机 Gazebo仿真实现移动物体的跟踪末尾有演示视频 这个学期我们有一个智能机器人系统的课设 我们组分配到的题目是 仿真环境下使用无人机及相机跟踪移动物体 本文主要记录完成该课设的步骤以及内容 我们采用的最终方案是PX4飞
  • Python贪吃蛇 (完整代码+详细注释+粘贴即食)

    文章目录 代码运行截图笔记补充参考博客 xff08 阿里嘎多 xff01 xff09 代码 usr bin env python coding utf 8 author xff1a Wangdali time 2021年1月20日16 08
  • 人工智能作业——python实现洗衣机模糊推理系统实验

    人工智能作业 python实现洗衣机模糊推理系统实验 实验环境实验要求代码实验结果 书中实验要求用Matlab实现 xff0c 但是Matlab包太大了 xff0c 且还需要重新学习Matlab的使用 发现python也可以实现 xff0c
  • 如何使用 Python 提取 JSON 中的数据?

    我们知道在爬虫的过程中我们对于爬取到的网页数据需要进行解析 因为大多数数据是不需要的 所以我们需要进行数据解析 常用的数据解析方式有正则表达式 xpath bs4 这次我们来介绍一下另一个数据解析库 jsonpath 在此之前我们需要先了解
  • Linux查看文件内容的几种方法

    文章目录 1 cat 显示文件内容2 less 向前或者向后查看文件内容3 tail 查看文件尾部的内容4 head 查看文件开头的内容5 more 分页显示文件内容 1 cat 显示文件内容 使用cat命令时 xff0c 如果文件内容过多
  • [野火]《FreeRTOS内核实现与应用开发实战指南》视频

    野火 FreeRTOS内核实现与应用开发实战指南 哔哩哔哩 bilibili 1 正点原子 FreeRTOS 视频教程 正点原子 FreeRTOS 视频教程 哔哩哔哩 bilibili 2 正点原子FreeRTOS手把手教学 基于STM32
  • FlinkSQL CDC实现同步oracle数据到mysql

    环境准备 1 flink 1 13 0 2 oracle 11g 3 flink connector oracle cdc 2 1 0 1 oracle环境配置 首先需要安装oracle环境 xff0c 参考 https blog csdn
  • MySQL窗口函数OVER()

    下面的讲解将基于这个employee2表 mysql gt SELECT FROM employee2 43 43 43 43 43 43 id name age salary dept id 43 43 43 43 43 43 3 小肖
  • ubuntu安装mysql详细过程

    1 安装mysql server sudo apt install mysql server 2 登录 sudo mysql u root p 两点要注意 添加sudo password中 任意密码都能登录 3 修改登录密码 ALTER U
  • 修改docker容器端口映射的方法

    大家都知道docker run可以指定端口映射 xff0c 但是容器一旦生成 xff0c 就没有一个命令可以直接修改 通常间接的办法是 xff0c 保存镜像 xff0c 再创建一个新的容器 xff0c 在创建时指定新的端口映射 有没有办法不
  • 【操作系统入门到成神系列 五】CPU 是如何执行任务的

    作者简介 xff1a 大家好 xff0c 我是 xff0c 独角兽企业的Java开发工程师 xff0c Java领域新星创作者 个人公众号 xff1a xff08 回复 技术书籍 可获千本电子书籍 xff09 系列专栏 xff1a Java
  • 群晖docker镜像源更换为阿里云镜像源

    群晖硬件 xff1a DS218 43 系统版本 xff1a DSM 7 0 41890 docker版本 xff1a 20 10 3 1233 前言 xff1a 除了群晖自带的应用之外 xff0c docker里也拥有及其丰富的软件 xf
  • 学好Windows编程要看的书籍

    本文是接着前面的学好C 43 43 要阅读的书籍而写的 xff0c 如果想了解C 43 43 的学习的话请先看学好C 43 43 要阅读的书籍 xff1a http blog csdn net a809146548 article deta
  • Git分支与标签(干货!!!)

    目录 一 Git分支 分支的概念 xff1a 分支的类别 xff1a 分支策略 xff1a 分支命令 xff1a git操作之pull拉取远程指定分支以及push推送到远程指定分支 xff1a 1 pull操作 2 push操作 二 Tag