第08节_Git分支
1.什么是分支
在使用版本控制工具开发的过程中,同时推进多个任务
2.分支的好处
- 同时并行推进多个功能开发,提高开发效率
- 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。
3.分支的底层实现
Git的分支操作之所以能够非常平滑,就是因为创建分支时,Git底层并没有把本地库中的内容复制出来,而仅仅是创建新的指针。有新版本提交后移动指针。
master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。 所以创建分支的本质就是多创建一个指针。 HEAD如果指向master,那么我们现在就在master分支上。 HEAD如果指向hotfix,那么我们现在就在hotfix分支上。 所以切换分支的本质就是移动HEAD指针。
4.分支操作
4.1 创建分支和切换分支
4.2在两个不同分支分别做不同修改
4.3分支合并
合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。 命令写法:git merge 目标分支 所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。
例如:把hotfix合并到master git merge hotfix 需要确保当前所在的分支是master
例如:把master合并到hotfix git merge master 需要确保当前所在的分支是hotfix
5.冲突
分支合并时,如果同一个文件的同一个位置有不同内容就会产生冲突。
5.1 冲突的表现
Git使用“<<<<<<<、=========、>>>>>>>>>>”
符号帮我们标记出来,现在产生冲突的内容。
<<<<<<< HEAD
Hello Git!I am very happy! &&&&&&&&&&&&
Hello Git!I am very happy!
=======
表示HEAD指针指向的位置(其实就是当前分支)在冲突中的内容
=======
Hello Git!I am very happy!
Hello Git!I am very happy! ************
>>>>>>> hotfix
表示hotfix指针指向的位置在冲突中的内容
所以所谓冲突其实就是让我们在这二者中选择一个,Git无法替我们决定使用哪一个。必须人为决定新代码内容。
此时使用git status命令查看本地库状态
5.2 冲突的解决
①第一步
编辑有冲突的文件,删除特殊符号,决定要使用的内容
②第二步
添加到暂存区
使用git status命令查看本地库状态
③第三步
执行提交(注意:使用git commit命令时不能带文件名)