Git(03)

目录

一、 Git分支和标签的命名规范

二、 分支在实际中有什么用呢? 

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

四、 分支策略 

五、 分支相关命令

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

七、 Git如何给branch打tag 

八、实战:分支与版本

九. git clone指定branch或tag 


一、 Git分支和标签的命名规范

1.分支
     dev/test/pre/pro(即master)
     
   2.标签
     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,这都是可以的

   3.分支与标签的关系
     dev-->alpha
     test-->beta
     pre-->rc
     pro-->r

二、 分支在实际中有什么用呢? 

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

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

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

   四个环境分别是: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

     1.git branch -m 要改的本地分支名 修改后的分支名(修改本地分支)
     2.git push origin :远程修改前的分支名(删除远程分支)
     3.git push origin 修改后的分支名:修改后的分支名(push 到远程分支)
     4.git branch --set-upstream 修改后的分支名 origin/修改后的分支名(绑定远程分支)

六、 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 <远程分支名> 
  

七、 Git如何给branch打tag 

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

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

2.创建tag
     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 "一期开发完成"    //创建附注标签

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

 3.删除tag
     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

八、实战:分支与版本

 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

九. 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
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值