目录
4.1 分支的概述
4.1.1 什么是分支
4.1.2 分支的好处
4.2 查看分支(查)
4.3 创建分支(增)
4.4 切换分支
4.5 修改分支(改)
4.6 合并分支(正常合并)
4.7 合并分支(冲突合并)
4.7.1 产生冲突的表现
4.7.2 产生冲突的原因
4.7.3 解决冲突的办法
小结
4.1 分支的概述
一般公司会有多个服务器,每个服务器的作用不尽相同,比如开发环境、测试环境、生产环境等。
4.1.1 什么是分支
在版本控制过程中,有时需要同时推进多个任务。此时,我们可以为每个任务创建单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)
4.1.2 分支的好处
- 优点1:并行推进多个功能开发,提高开发效率。
- 优点2:各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
命令 | 作用 |
git branch -v | 查看分支(查) |
git branch 分支名 | 创建分支(增) |
无 | 修改分支(改) |
git checkout 分支名 | 切换分支 |
git merge 分支名 | 合并分支(把指定的分支合并到当前分支上) |
4.2 查看分支(查)
基本语法
- git branch -v
案例实操
- *代表当前所使用的分支
4.3 创建分支(增)
基本语法
- git branch 分支名
案例实操
- Step1:创建分支hot-fix
- Step2:查看分支(当前处于master分支上)
4.4 切换分支
基本语法
- git checkout 分支名
案例实操
- Step1:切换分支
- Step2:查看分支(当前处于hot-fix分支上)
- Step3:验证指针的指向(查看配置文件)
4.5 修改分支(改)
- Step1:修改hot-fix分支上的文件
- 第一行:10个2修改为5个2
- 第二行:10个3修改为5个3
- Step2:查看本地库状态
- Step3:添加到暂存区、提交到本地库
- Step4:查看历史版本
4.6 合并分支(正常合并)
正常合并
- master分支不做修改,hot-fix分支做了修改
- 在master分支上合并hot-fix分支
基本语法
- git merge 分支名
案例实操
要求:在master分支上合并hot-fix分支
- Step1:切换分支(将当前分支切换回master分支)
- Step2:合并分支
4.7 合并分支(冲突合并)
冲突合并
- master分支和hot-fix分支同时做了修改
- 在master分支上合并hot-fix分支
4.7.1 产生冲突的表现
- Step1:修改master分支 → 添加到暂存区 → 提交到本地库
- Step2:从master切换到hot-fix分支
- Step3:修改hot-fix分支 → 添加到暂存区 → 提交到本地库
- Step4:从hot-fix分支切换到master分支
- Step5:在master分支上合并hot-fix分支
- 冲突(内容):在 hello.txt 中发生合并冲突
- 自动合并失败;解决冲突,然后提交结果。
- 产生冲突的表现:后面状态为MERGING(正在合并中,表明还未合并完成)
4.7.2 产生冲突的原因
合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。Git 无法替我们决定使用哪一个。必须人为决定新代码内容。
4.7.3 解决冲突的办法
- Step6:编辑有冲突的文件,删除特殊符号(见下),决定要使用的内容
<<<<<<< HEAD
当前分支的代码
=======
合并过来的代码
>>>>>>> hot-fix
- Step7:添加到暂存区
- Step8:提交到本地库
- 注1:此时使用git commit命令时不能带文件名,否则会报错
- 注2:在master分支上合并hot-fix分支,只会对master分支产生影响,而hot-fix分支不受影响。
小结
- 三本质:
- 分支(master、hot-fix)的本质就是指向具体版本记录的指针
- 创建分支的本质就是多创建一个指针
- 切换分支的本质就是移动 HEAD 指针
- 当前所在的分支是由HEAD指针决定的,比如:
- 如果HEAD指向master,那么我们现在就在 master 分支上。
- 如果HEAD执行hot-fix,那么我们现在就在 hot-fix 分支上。