Git分支&标签

2023-05-16

目录

一,分支

环境的的功能及特点

 分支的策略

分支的相关指令

二,标签

1.查看所有标签

2.创建tag 

  3.删除tag

4.分支与版本 


一,分支

1.分支的命名规范

    dev/test/pre/pro(即master)

2.分支的作用

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

环境的的功能及特点

 四个环境分别是:dev、test、pre、pro(master),中文名字:开发环境、测试环境、灰度环境、生产环境

分析:

         dev环境:开发环境,外部用户无法访问,开发人员使用,版本变动很大。
         test环境:测试环境,外部用户无法访问,专门给测试人员使用的,版本相对稳定
         pre环境:灰度环境,外部用户可以访问,但是服务器配置相对低,其它和生产一样。
         pro(master)环境:生产环境,面向外部用户的环境,连接上互联网即可访问的正式环境。

 分支的策略

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

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

   

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

   

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

分支的相关指令

 1.查看分支,此命令会列出所有分支,当前分支前面会标一个*号
     
git branch           //查看本地分支
   
 git branch -a        //查看远程分支

   

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

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.重命名本地分支,并提交到远程
     (1).重命名 
       
git branch -m oldBranchName newBranchName
    (2)删除远程分支
     
 git push origin :oldBranchName
    (3)将重命名过的分支提交
       
git push origin newBranchName

             3.1.git branch -m 要改的本地分支名 修改后的分支名(修改本地分支)
             3.2.
git push origin :远程修改前的分支名(删除远程分支)
             3.3.
git push origin 修改后的分支名:修改后的分支名(push 到远程分支)
             3.4.
git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支)

效果展示

在仓库存放的文件中也就会出现在命令中执行的两个文件 

 

 

 进入指定文件(dev)

 在仓库中也能看到分支文件,此时的分支只有一个

 当执行 git push origin (分支名  将创建的分支提交到远程仓库中) 的命令时,分支文件就被提交过来了

 

 

二,标签

1.查看所有标签

git tag
     注1:标签不是按时间顺序列出,而是按字母排序的。可以用git show <tagname>查看标签信息

2.创建tag 

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

创建标签

 

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

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

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

  3.删除tag

1.删除本地tag

       git tag -d 标签名
       

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

     

2.删除远程tag
       1.如果标签已经推送到远程,要删除远程标签就麻烦一点,先从本地删除
         git tag -d 标签名
     

         2.然后,再从远程删除。删除命令也是push,但是格式如下:
         git push origin :refs/tags/标签名        
GUI工具为:TortoiseGit
分3个部分:dev/test如何进行代码修复
          dev->test->pre->pro的发布
           产品升级重新发布 

4.分支与版本 

 dev/test/pre/pro(即master)

   

1.克隆远程库test1
     git clone git@github.com:yanppp999/test1.git

 2.依次创建dev/qas/pre分支(pro即master,已存在不用再创建),然后切换到dev分支
      git branch dev
      git branch test
      git branch pre 

  add(int a, int b){a+b+b}   v1.0.0 
  add(int a, int b, int c)   v1.1.0
  add(int... arr)            v1.2.0
   

3.创建并编辑Cal.java类,添加一个add(int a,int b)方法,然后三步曲:add->commit->push(*****)
     git add Cal.java
     git commit -m '项目一期完成'
     git push origin dev

     注1:在有分支情况下,push命令需要添加远程仓库名和分支名这两个参数
          git push origin dev 
     注2:doc窗口切换到master,输入ls命令,Cal.java是找不到的,同理在github网站上,也要选择dev分支才能看到Cal.java文件 
          git branch master
          ls
     至此,项目一期工作完成,接下来进行测试阶段(会在dev-test两个分支间不断切换)
     
    标签相关内容,在分支讲完之后,再重新添加进来
      下面命令此步骤先跳过 
      创建并推送标签“dev-1.0.0”至远程
     git checkout dev
     git tag 1.0.0-alpha
     git push origin 1.0.0-alpha

知识扩充

   5.将dev合并到test
     git checkout test
     git merge dev
     git push origin qas

 6.测试结束之后,创建标签:qas-1.0.0
     git tag qas-1.0.0
     
 

 7.将qas合并到pre
     git checkout pre
     git merge qas
     git tag pre-1.0.0

 8.将pre合并到master
     git checkout master
     git merge pre
     git tag prd-1.0.0 


   注1:实际生产中的APP或软件软件版本命名规范详解,详情可参考:资料/12,资料/13
        v1.0.0.191202_be.d
        v1.0.0.191210.t 
        v1.0.0.191221.rc 
        v1.0.0.191225.r

9. git clone指定branch或tag 

1.取完整
     git clone https://github.com/arvidn/libtorrent.git

   2.使用指定branch
     git checkout origin/dev

   3.使用指定tag 
     git checkout 1.0.0-alpha   

  4.也可以在clone的时间指定tag或branch:
    git clone -b RC_1_1 https://github.com/arvidn/libtorrent.git 
    git clone -b libtorrent-1_1_9 https://github.com/arvidn/libtorrent.git

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

Git分支&标签 的相关文章

  • Git:在本地合并远程分支

    我已经通过以下方式拉取了所有远程分支git fetch all 我可以看到我想要合并的分支git branch a作为远程 原点 分支名称 问题是它无法访问 我无法合并或结帐 您可以参考那些远程跟踪分支 列出git branch r 及其遥
  • git 分叉是如何工作的?

    所以我登录了 github 并 fork 了一个项目 每次原始存储库更新时 我的分叉存储库都会更新吗 或者我应该每次都从原始存储库进行分叉 这样我就不会错过对原始存储库所做的任何新更改 分叉是存储库的副本 分叉存储库允许您自由地尝试更改 而
  • 致命:早期 EOF 致命:索引包失败

    我用谷歌搜索并找到了很多解决方案 但没有一个适合我 我试图通过连接到 LAN 网络中的远程服务器来从一台计算机进行克隆 从另一台机器运行此命令会导致错误 但是在服务器上使用 git 192 168 8 5 运行相同的克隆命令 一切正常并且成
  • 恢复 git reset --soft

    我修改了我的分支中的一些文件并做了一个 git add all 但这添加了一些我不打算为提交添加的文件 所以我做了一个 git reset soft HEAD 2 instead of doing git reset HEAD 但之前的提交
  • git 克隆错误:致命:git upload-pack:由于远程端可能的存储库损坏而中止

    我对 git 存储库具有读 写访问权限 但是当我尝试 git clone 时 出现以下错误 x ubuntu temp git clone email protected cdn cgi l email protection Corp ap
  • 如何使用 libgit2 创建空提交?

    我一直在寻找libgit2 C API 参考 https libgit2 org libgit2 但我不知道如何模仿git commit allow empty libgit2 是否有内置方法来创建空提交 如果没有 git 如何在底层创建一
  • 有关多个远程存储库的 Git 状态

    我有一个脚本 如果我忘记在 40 多个存储库中提交或推送一些代码 它会通过电子邮件向我发送提醒 在我的两个项目中 我遵循了这些帖子中的答案 其中我设置了 git push 来推送到多个存储库 从多个远程位置拉 推 https stackov
  • “git add”返回“致命:外部存储库”错误

    我刚刚进入 git 的奇妙世界 我必须提交我对程序所做的一系列更改 位于名为的目录中 var www myapp 我创建了一个新目录 home mylogin gitclone 从这个目录中 我做了一个git clone针对公共回购 我能够
  • 使用 Subversion 进行部分提交

    鉴于我做的案例两个独立的变化 in one文件 例如 添加了一个新方法并更改了另一个方法 我经常不想提交这两项更改 因为one提交 但作为two独立承诺 在 git 存储库上我会使用互动模式 of git 添加 1 http linux d
  • 如何标记单个文件?或如何下载特定文件? - 胃肠道

    我想向文件添加标签以轻松下载该文件而不是整个分支 如何下载GIT中的特定文件 我不知道有什么方法可以标记特定文件git 对于第二个问题 如何下载特定文件git 仅当您的意思是 同时下载 时 以下内容才有效in a git存储库 这就是我理解
  • Git 中的“分支提示”是什么?

    我正在学习 Git 并阅读专业 Git 书籍 https git scm com book en v2 书中和 Stack Overflow 上有时会使用术语 分支提示 但我找不到它的含义 分支提示是分支上的最后一次提交或最近一次提交 基本
  • 如何在本地快速拉取拉取请求

    在合并拉取请求之前 我想在本地快速拉取请求并运行测试并测试一些内容 我还不想点击 gihub 合并拉取请求 我以为滑轮会有帮助http ejohn org blog pulley http ejohn org blog pulley 但我收
  • 有人熟悉 git 错误“缺少对象 0000000000000000000000000000000000000000 for refs/heads/...”吗?

    我们正在运行 git v1 7 1 并配置了 gitweb 我们也使用 gitolite 进行管理 但我不认为这与这个问题有密切关系 有时我们会在 Apache 日志中收到如下错误 missing object 00000000000000
  • 如何使用 vim 作为“git show”编辑器?

    全部如所述如何使用 vim 作为 git log 编辑器 https stackoverflow com questions 16666009 how do i use vim as git log editor不适用于 git show
  • 从 github 中删除子项目提交

    我有两个存储库A and B 我错误地在我的机器上将仓库 B 克隆到了 A 内 我从存储库 B 中删除了所有代码 但是当我在源上从 A 推送并合并代码时 它还显示了子项目提交B在 Github 仓库上 我想从我的 master 上删除子项目
  • 获取最新远程提交的 SHA1 [重复]

    这个问题在这里已经有答案了 可能的重复 git bash 如何检查是否有新的提交可用 https stackoverflow com questions 6006759 git bash how to check if theres a n
  • 是否可以在 git 存储库之外添加和提交文件?

    我们的文本文件分布在系统的各个角落 我们计划将这些文件中所做的所有修改添加到 git 存储库中 每次对这些文件进行修改都是由脚本进行的 因此 我们计划向该脚本添加新命令 以将文件添加到 git 存储库 但是 这些修改是同时进行的 我们可以为
  • 在 Web 应用程序中显示最新的提交值?

    我有一些 Rails 应用程序 我使用 Git 作为版本控制系统 我使用 GitHub 或 Beanstalk 作为存储库主机 从理论上讲 我想要做的事情非常简单 以某种方式在 Web 应用程序的页脚中显示最新的提交 ID 号 哈希值 这样
  • 致命:不是 git 存储库(或任何父目录):.git [重复]

    这个问题在这里已经有答案了 当我尝试推送 github com 上的现有存储库时 当我输入命令时 网站提示我将其输入终端 我收到了以下致命错误消息 Not a git repository or any of the parent dire
  • 按时间顺序将多个文件夹提交到 git 中

    我有数百个网站备份 每个文件夹一个 我想将它们放入 git 存储库中 每个备份作为一个版本 这些变化主要涉及图像文件和每天 2 个数据库备份 大小约为 25 GB 并且不断增加 有没有办法告诉 git 获取其中一个文件夹并将其提交到存储库中

随机推荐

  • 详解strstr函数:查找子字符串函数及其模拟实现

    详解strstr函数 xff1a 在一个字符串中查找另一共字符串是否存在 xff01 对于strstr查找子字符串 xff0c 笔者如果不是对C语言学习的更加深入 xff0c 可能还是不知道有这个函数 xff01 xff01 xff01 之
  • 51--定时器/计数器,串口,中断的巧妙关系

    目录 什么是中断 什么是定时器计数器 什么是串口 开始 直接配置中断 中断 43 定时器 计数器 串口 43 中断 总结 中断查询次序号 xff1a 什么是中断 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的 xff0c 中
  • 字符串查找函数Strstr函数的实现(详细易懂)

    首先 xff0c 字符串查找函数是在目的字符串中查找源字符串的首次出现的具体位置 xff0c 若找到了便返回该位置的地址 xff0c 若没有找到 xff0c 则返回空指针NULL char strstr const char arr1 co
  • ROS安装与Rviz的摄像头视频采集与标定

    文章目录 一 ROS的安装与配置1 添加 ROS 软件源 xff0c 将下列命令输入到 Ubuntu 的终端执行2 添加密钥 xff0c 将下列命令输入到 Ubuntu 的终端执行3 安装desktop full4 初始化rostep5 设
  • ros2的基本使用/基础知识——ros2节点

    1 节点是什么 每个节点只负责单独的模块 xff08 例如 xff1a 控制车轮转动 xff1b 从激光雷达处获得数据 xff1b 处理激光雷达的数据 xff1b 负责定位 xff09 照相机 地盘 控制 2 节点之间如何交互 xff1f
  • SSH秘钥登录配置与系统日志管理

    配置 sshd 服务 SSH xff08 Secure Shell xff09 是一种能够以安全的方式提供远程登录的协议 xff0c 也是目前远程管理 Linux 系统 的首选方式 在此之前 xff0c 一般使用 FTP 或 Telnet
  • 关于Ubuntu中Could not get lock /var/lib/dpkg/lock解决方案

    问题现象 xff1a root 64 gvt NUC6CAYH apt get install net tools E Could not get lock var lib dpkg lock frontend open 11 Resour
  • vscode报错vue/multi-word-component-names处理

    vue multi word component names是用于检测当前的组件名称是否使用驼峰或多单词命名 错误截图如下 xff1a 1 可以修改 eslintrc js文件的配置 module exports 61 root true
  • Android SDK的安装步骤

    1 Android SDK下载 https www androiddevtools cn 2 解压Android SDK压缩包 放在没有中文的目录里面 3 打开Android sdk windows文件夹 xff0c 双击SDK manag
  • Apollo control之PID算法

    Apollo studio 官网 xff1a Apollo开发者社区 baidu com 目录 1 PID简介 2 PID调参思路 3 代码 4 解决积分饱和的方法 4 1 IC 积分遇限削弱法 4 2 BC 反馈抑制抗饱和 1 PID简介
  • TCP通信模型(C语言实现)

    大家好 xff0c 我是练习编程时长两年半的个人练习生昆工第一ikun xff0c 今天我们来分享TCP通信模型 xff0c 并且用C语言实现它 目录 一 我们将实现三个示例功能 xff1a 二 TCP服务器搭建流程 xff08 1 xff
  • 场景文本识别中的字符感知采样与校正(Character-Aware Sampling and Rectification for Scene Text Recognition)

    摘要 由于形状和纹理变化较大 xff0c 曲面场景文本识别在多媒体社会中是一项具有挑战性的任务 以前的方法通过等距离采样提取和校正文本行来解决这一问题 xff0c 这忽略了字符级别信息并导致字符失真 为了解决这个问题 xff0c 本文提出了
  • MyBatisPlus中的likeLeft和likeRight

    在使用MyBatisPlus来匹配身份证后6位时遇到了likeLeft和likeRight的问题 xff1a likeLeft时匹配最左边还是匹配最右边 xff1f 所以来一个简单的测试 xff08 通过打印 成功 失败 来判断 xff09
  • 计算机网络第一章总结

    目录 1 1计算机网络再信息时代中的作用 1 2互联网的概述 1 2 1网络 xff0c 互联网和因特网 1 2 2互联网基础结构的三个阶段 1 2 3互联网的标准化工作 1 3互联网的组成 1 3 1三种交换方式 1 4计算机网络的类别
  • Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column……报错的解决办法

    问题原因 xff1a 这个报错是执行有GROUP BY的语句时出现的 原因是MySQL启用了默认的only full group by SQL模式 导致GROUP BY语句报错 解决办法 xff1a 打开mysql的安装目录找到my ini
  • 【Linux安全管理】Firewalld详解

    目录 1 与iptables不同 2 配置防火墙 3 firewalld区域概念 4 filewalld 配置生效 5 firewalld服务 firewalld 端口映射 富规则 rich rule 1 与iptables不同 firew
  • C++之class和struct的区别

    在C语言中 xff0c struct是一个数据类型 xff0c 所以struct内不能定义函数 xff1b 在C 43 43 中保留了struct关键字 xff0c 并且进行了补充 xff0c struct类似于class xff0c 可以
  • QEMU使用virtio磁盘(Ubuntu/windows)

    环境 宿主环境 xff1a windows 10 pro QEMU版本 xff1a 3 1 客户机 xff1a windows2003 virtio是一种半虚拟化技术 xff0c window2003安装盘不带驱动程序 xff0c 所以首先
  • 创建一个ArrayList<String> 集合,通过反射向集合中添加Integer类型的数据

    1 思路 创建一个ArrayList lt String gt 集合 通过反射获取到ArrayList的Class对象通过Class类获取到ArrayList中的add方法 2 所需关键知识 获取Class类有三种方法 xff1a xff0
  • Git分支&标签

    目录 一 xff0c 分支 环境的的功能及特点 分支的策略 分支的相关指令 二 xff0c 标签 1 查看所有标签 2 创建tag 3 删除tag 4 分支与版本 一 xff0c 分支 1 分支的命名规范 dev test pre pro