Git 分支的概念及操作

目录

1. 个人经历的版本管理历史

2 Git 分支管理 

2.1 创建分支

2.2 删除分支

2.3 修改分支

2.4 查看分支

25 切换分支

2.6 合并分支

2.7 快速创建分支切换分支

2.8 下载制定分支文件


1. 个人经历的版本管理历史

        学生时代,小组几个人合作开发一个系统,代码的合并依赖U盘,QQ,飞秋等软件使我们的代码迁移到一起,再进行整合,项目启动成功,再把成功的项目拷贝给小组成员。这无疑效率是低下的。这时候接触到了SVN,立马安装服务端,客户端,使用简单,大家很Happy的开发起来,但是时间一长,也会有抱怨,服务主机长时间开机,导致电脑发烫,有时不知被谁关了机,还有一些提交版本无效,编号不识别,目录不存在等奇葩情况,不过利大于弊,也就一直那么用着。一直在毕业工作以后,公司版本管理使用的是Firefly,首次认识到版本分支的概念,并乐此不疲。但是该产品限速还收费。导致使用的都是一些金主,普遍性不高,近俩年 Git 异军突起,分布式版本控制,秒建分支,每一台电脑均可作为“服务端”等理念,迅速占领了IT市场。

为什么要建立分支呢?建分支有什么优势呢?

答案是:必须建分支,优势大大的。下面简单分析一下:

说明:

第一层:Product:生产版本;永远时最正确的,经过完整测试,实实在在生产环境运行的代码版本。

第二层:准生产版本;

                     AOP 紧急分支,用于每次上线完成,程序遇到阻断性异常,需要紧急上线,开发测试的分支。

                      FT 功能测试分支,用于联调测试结束,打包部署在一个准生产环境功能测试。       

第三层:测试版本; LT 联调测试分支,用于开发人员代码编写完成,首次在测试环境进行来联调测试。

第四层 :开发版本;就是开发人员代码下载库,用于日常开发,单元测试...

优点:

1. 很明显,我们的版本库不是由很多个开发人员控制的,而是由版本管理员控制的,就是第三层及以上权限。有效保证我们的代码很少有人动,也就减少了不必要的异常。

2. 正常的上线流程是 开发-测试-准生产环境测试-部署生产。假如此刻我们处于测试阶段,突然生产环境遇到一个阻断性Bug,这时就需要我们优先解决生产问题,问题来了,因为这个月我已经开发了一部分功能,并且部署测试,不能因为解决生产问题就把我修改的代码回滚掉吧,那不回滚了,直接在现有代码基础上解决生产环境的Bug,这样可能会导致夹带本次改造的代码部署生产,那就要想有没有一个干净的和生产环境一样的版本库呢,答案是有的,就是我们的准生产版本(AOP/FT),因为FT开发人员没有权限建立分支开发测试,那就要用到AOP紧急上线分支。或是再搞一个FT2出来...这样不用动我们本次改造的代码,又可以迅速解决生产环境bug,这就是分支的优势。

2 Git 分支管理 

本次创建三个分支,父分支(SPRINGBOOTDEMOLAST);子分支(COMPANY,FAMILY)

2.1 创建分支

$ git branch branchname

2.2 删除分支

$ git branch -d branchname


2.3 修改分支

git branch -m oldbranchname newbranchname


2.4 查看分支

$ git branch      # 分支前有一个 * 号代表当前分支

25 切换分支

$ git checkout branchname

2.6 合并分支

合并之前,我们在FAMILY分支新建一个文件FAMIL.txt,master分支新建一个说明文档.txt,然后切换到master分支;进行俩分支合并,注意,合并前,俩个版本都要提交到本地版本库

$ git merge branchname

2.7 快速创建分支切换分支

$ git checkout -b branchname

最后告诫初学者,commit 之后还要提交 push !!!

2.8 下载制定分支文件

git clone -b branchname git地址