第08节_Git分支

1.什么是分支

在使用版本控制工具开发的过程中,同时推进多个任务

images

2.分支的好处

  • 同时并行推进多个功能开发,提高开发效率
  • 各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败的分支删除重新开始即可。

3.分支的底层实现

Git的分支操作之所以能够非常平滑,就是因为创建分支时,Git底层并没有把本地库中的内容复制出来,而仅仅是创建新的指针。有新版本提交后移动指针。

images

master、hotfix其实都是指向具体版本记录的指针。当前所在的分支,其实是由HEAD决定的。 所以创建分支的本质就是多创建一个指针。 HEAD如果指向master,那么我们现在就在master分支上。 HEAD如果指向hotfix,那么我们现在就在hotfix分支上。 所以切换分支的本质就是移动HEAD指针。

4.分支操作

4.1 创建分支和切换分支

images

4.2在两个不同分支分别做不同修改

images

images

4.3分支合并

images

合并分支时一定是涉及到两个分支。这两个分支一个是“当前所在分支”,一个是“目标分支”。 命令写法:git merge 目标分支 所以分支合并命令的本质就是把“目标分支”合并到“当前分支”。

例如:把hotfix合并到master git merge hotfix 需要确保当前所在的分支是master

例如:把master合并到hotfix git merge master 需要确保当前所在的分支是hotfix

5.冲突

分支合并时,如果同一个文件同一个位置有不同内容就会产生冲突。

5.1 冲突的表现

images

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命令查看本地库状态

images

5.2 冲突的解决

①第一步

编辑有冲突的文件,删除特殊符号,决定要使用的内容

images

②第二步

添加到暂存区

images

使用git status命令查看本地库状态

images

③第三步

执行提交(注意:使用git commit命令时不能带文件名)

images