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分支&标签 的相关文章

  • 如何更改我的 Github Pages 默认 index.html 位置?

    我已经尝试过以下线程中显示的内容 我可以将我的 Github Pages index html 放在存储库的子文件夹中吗 https stackoverflow com questions 25320356 can i have my gi
  • “无法同时更新路径和切换到分支”

    我有时会使用checkout b创建新分支的选项 同时将其签出并在一个命令中设置跟踪 在新环境中 我收到此错误 git checkout b test track origin master fatal Cannot update path
  • 如何正确处理git中仅本地使用的文件?

    我想重新排序 git commits 中更改文件的输出 因此我创建了一个名为submodule orderfile并配置diff orderFile https git scm com docs git config指向该文件 现在出现了很
  • git | git将旧提交移至另一个分支的过去

    我过去错误地进行了分支 并且在另一个分支的开头留下了一个提交 03431cb HEAD gt bar a2 d332e4d foo b2 9b29ae3 b1 4656a98 a1 6ebca20 master root 我怎样才能移动a1
  • 从另一个分支或从 master 创建 Git 分支?

    所以我是 Git 新手 我最近从存储库中提取了主分支的新版本 我创建了一个branch 1 获取某个功能并将其推送到存储库并创建拉取请求 现在我创建了一个新的branch 2 具有另一个功能 但由于我的拉取请求尚未合并 再次拉取 maste
  • git receive-pack 以 0000 停止

    我对 git 很陌生 目前正在尝试在 opensuse 上使用 gitolite 和 trac 设置环境 我设法使用来自的脚本迁移旧的 svn 存储库http john albin net git git svn migrate http
  • GIT Rebase 协作的分支?

    阅读本文后 重新设置基点以收集从主分支到我的功能分支的更改是有意义的 Git 工作流程以及 rebase 与合并问题 https stackoverflow com questions 457927 git workflow and reb
  • 卡在 git 提交窗口

    我被困在这个窗口了 我做了一个git add a就在之前 然后git commit在 git cmd exe 中 我怎样才能离开这里 我写了我的提交消息并按回车键 但什么也没发生 我担心只是关闭窗口 我在互联网上找不到任何内容 官方网站没有
  • 创建 Git 标签时自动运行 Git hook

    是否有一个 Git 钩子可以在添加新的 Git 标签时执行 因为我想自动将新的 Git 标签名称写入文本文件 您知道如何执行此操作吗 虽然目前无法使用挂钩 但您始终可以创建一个简单的脚本 mytag sh bin sh z 1 git ta
  • git 可以知道你当前的分支是从哪个分支分支出来的吗?

    我想创建一个 git 别名 让我可以从其分支的原始分支同步我的分支 例如 如果我从
  • 是什么让 DVCS 中的合并变得如此简单?

    我读于乔尔谈软件 http www joelonsoftware com items 2010 03 17 html 通过分布式版本控制 分布式部分实际上不是 最有趣的部分 有趣的是 这些 系统根据变化来思考 而不是 就版本而言 and a
  • 用于维护项目扩展分支的 Git 工作流程?

    我们在 GitHub 上分叉了一个 OSS 项目 并向其添加一些自定义扩展 我们希望将我们所做的一些更改发送回原始项目 错误修复等 但其他更改是原始项目维护者目前不感兴趣的功能扩展 我正在尝试找出管理这种情况的最佳工作流程 我希望我们的主分
  • Git 错误:引用名称“HEAD”不明确

    我对 git 还很陌生 目前 我尝试按照本教程使用分支名称和版本覆盖我的应用程序的图标 http www merowing info 2013 03 overlaying application version on top of your
  • git分支没有显示所有分支

    opt lampp htdocs drupal 8 4 0 git branch 我已经在我的系统中安装了drupal 我想切换到其他分支 但是当使用git分支时不显示其他分支 Execute git branch av显示所有远程和本地分
  • 当 TLSv1 因“忽略未知记录”而失败时,使 git 恢复为 SSLv3

    无法使用git git clone https github com foo bar fails fatal unable to access https github com foo bar Unknown SSL protocol er
  • Gitflow错误无法初始化

    我已经将 gitflow 安装在我的 github 项目所在的目录中 但是 当我尝试使用命令 启动时git flow init 我收到以下错误消息 git flow init C cygwin64 usr local bin gitflow
  • 我应该在 Heroku 上部署 Ruby on Rails 应用程序吗?

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 关于我自己的一些情况 我今年 24 岁 去年从北卡罗来纳州立大学毕业 获得了分析硕士学位 统计 数学之类的 我没有很强的编程背景 这对我的问题非
  • git Push heroku master 因“HTTP 400curl 22 请求的 URL 返回错误”而失败

    我正在尝试推送仅显示 你好 世界 的 Rails 应用程序 然后我遇到了如下错误 我想知道如何解决这个问题 git推送heroku大师枚举对象 88 完成 计数对象 100 88 88 完成 增量压缩最多使用 4 个线程 压缩对象 100
  • .gitignore 在提交、推送或到达服务器时起作用吗?

    说我有一个 gitignore忽略所有 class files 当 时这些文件是否远离远程源 我在本地提交 添加我的文件 我的吗git寻找一个 gitignore当使用添加 提交时 并根据它所说的内容 从提交中删除内容 我推动我的承诺 做g
  • Git 中的作者和提交者有什么区别?

    我刚刚在 GitHub 上发现了以下提交 https github com felixge node formidable commit 0a0b150668daa3c6f01626d2565b898e5da12392 https gith

随机推荐

  • 详解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