热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Git之分支与版本(下)

目录一、分支管理分支devtestprepro(即master)1.分支在实际中有什么用呢?2.四个环境以及各自的功能特点3.分支策略在实际开发中,

目录

一、分支管理

 分支     dev/test/pre/pro(即master)

1. 分支在实际中有什么用呢?

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

 3. 分支策略

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

4. 分支相关命令

   1.查看分支

   2.创建分支

   3.切换分支

   4.创建+切换分支

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

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

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

二、tag标签管理

 标签

Git如何给branch打tag?

   1.查看所有标签

   2.创建tag

   3.删除tag

分支与标签的关系



 


一、分支管理


 分支
     dev/test/pre/pro(即master)

 


1. 分支在实际中有什么用呢?


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

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



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


   四个环境分别是:dev、test、pre、pro(master),

   中文名字:开发环境、测试环境、灰度环境、生产环境


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



 
3. 分支策略



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



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

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

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

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

学习时,先暂不考虑远程问题,本地搞懂了,再考虑远程问题




4. 分支相关命令



   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

     1.git branch -m 要改的本地分支名 修改后的分支名(修改本地分支)


     2.git push origin :远程修改前的分支名(删除远程分支)


     3.git push origin 修改后的分支名:修改后的分支名(push 到远程分支)


     4.git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支)


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


   (1)pull操作
     1.将远程指定分支 拉取到 本地指定分支上
       git pull <远程仓库名> <远程分支名>:<本地分支名>

     2.将远程指定分支 拉取到 本地当前分支上:
       git pull <远程仓库名> <远程分支名>

     3.将与本地当前分支同名的远程分支 拉取到 本地当前分支上
       git pull <远程仓库名>


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



 (2)push操作
     1.将本地当前分支 推送到 远程指定分支上(注意:pull是远程在前本地在后,push相反)
       git push <远程仓库名> <本地分支名>:<远程分支名>

     2.将本地当前分支 推送到 远程指定分支上
       git push <远程仓库名> <远程分支名>

     3.将本地当前分支 推送到 与本地当前分支同名的远程分支上
       git push <远程仓库名>


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


新创一个项目

e2e8d5469d854eae813194b29b93e005.png

 

c35402b8195548ff8d7aa4ba47a425e5.png

 

43db86903361483493682bf55d3ae2eb.png

724899447c56444ea9162ec86fd5b80b.png

 

 

 

 

 


二、tag标签管理

 


 标签



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

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



Git如何给branch打tag?


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

 


   1.查看所有标签


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

 


   2.创建tag


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

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

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

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

 


   3.删除tag


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

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

 


分支与标签的关系


     dev-->alpha
     test-->beta
     pre-->rc
     pro-->r


 

 

 


推荐阅读
  • 先记住几个专用名词,如下:Workspace:工作区IndexStage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库#在当前目录新建一个G ... [详细]
  • 本文详细介绍了git常用命令及其操作方法,包括查看、添加、提交、删除、找回等操作,以及如何重置修改文件、抛弃工作区修改、将工作文件提交到本地暂存区、从版本库中删除文件等。同时还介绍了如何从暂存区恢复到工作文件、恢复最近一次提交过的状态,以及如何合并多个操作等。 ... [详细]
  • 双十一在家学用 Git
    对于所有的开发者来说,掌握一门代码版本控制系统都是必须的,无论是自己做项目,团队合作,工作中的合作,都离不开版 ... [详细]
  • 修正我的GitHub commit 数据
    早晨上班,滴滴搭车里,我在掘金这个帖子看到大家晒自己的Github活跃记录,我也晒了下自己的记录。不过太少了。有遗漏的commits状况这也让我知道,自己觉得自己很忙的,实际上提交 ... [详细]
  • 前言本篇为大家总结社区多人合作常见的场景和对应的git操作命令。本篇非新手教程,阅读本篇前需具备Git基础知识。Git入门教程请参考https://www ... [详细]
  • git向远程仓库提交遇到的各种坑
    **码云***gitinit初始化本地仓库gitinit*gitremoteaddorigingitgithub.com:xueqinngchennLocal-agent.git将 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 本文介绍了在git中如何对指定的commit id打标签,并解决了忘记打标签的问题。通过查找历史提交的commit id,可以在任意时间点打上标签。同时,还介绍了git中的一些常用命令和操作。 ... [详细]
  • 初始化初始化本地空版本库,仓库,英文名repositorymkdirtest&&cdtestgitinit克隆项目到本地gitclone远程同 ... [详细]
  • Git GitHub多人协作
    在学校做一个小项目需要多人协作,就用到了gitHub,百度了一下多数写得乱七八糟或者支离破碎,于是总结了一下自己的步骤如下,第一次使用GitHUb,哪里不对望大神指出一.前期准备: ... [详细]
  • 如何在vscode中使用GitLab我同广大码友们一样,好不容易赶上了个节假日,回到家一顿安排,可屁股还没坐热就接到线上紧急BUG需要修复 ... [详细]
  • 1、获取远程供应商的repo镜像repoinit--mirror-ussh:$username$host_name:29418manifests-bxx_branch--repo ... [详细]
  • 记一次git的版本回退
    背景本地有个项目已经修改了很久(是自己的小项目不是公司的),文件挺多的,还有大量的log文件。一些资源文件是中文名,工作区修改后使用了命令gitadd.本来在.gitignore文 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
author-avatar
和谐家于社会
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有