4.1什么是分支
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独
分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时
候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是
一个单独的副本。(分支底层其实也是指针的引用)
简单来说就是在使用版本控制工具开发的过程中,同时推进多个任务(并行互不影响)
4.2分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
4.3分支的操作命令
分支名称 | 作用 |
---|---|
git branch 分支名 | 创建分支 |
git branch -v | 查看分支 |
gitcheckout 分支名 | 切换分支 |
git merge 分支名 | 把指定的分支合并到当前分支上 |
git branch -D 分支名 | 删除分支 |
4.3.1 分支操作
①创建分支和切换分支
②在两个不同分支分别做不同修改
合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。
命令写法:git merge 目标分支
所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。
例如:把hotfix合并到master git merge hotfix 需要确保当前所在的分支是master
例如:把master合并到hotfix git merge master 需要确保当前所在的分支是hotfix
将hot-fix当前的版本合并到master分支
②合并分支冲突
产生冲突的原因:
分支合并时,如果在不同分支对同一个文件的同一个位置有两套完全不同的修改就会产生冲突。
git无法帮我们决定使用哪一个。必须人为决定新代码内容。
冲突的具体内容
(1)冲突解决
- 将特殊符号删除修改成自己需要的内容
特殊符号
<<<<< HEAD
内容冲突1
=======
内容冲突2
>>>>>>hot-fix
- 查看状态(检测到有文件有两处修改)MERGING表示冲突
- 添加暂存区提交本地库
注意:此时使用git commit命令时不能带文件名 不然报错
4.3.2 分支的底层实现
master、hot-fix 其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的
所以创建分支的本质就是多创建一个指针。“
HEAD如果指向master,那么我们现在就在master分支上。
HEAD如果指向hot-fix,那么我们现在就在hot-fix分支上。:
所以切换分支的本质就是移动HEAD指针。
通过下面文件也可以查看HEAD指向哪个分支
当前路径是本地库中的.git文件夹中