文章目录


Git 分支的操作

一、分支的概念

【Git】Git的分支操作_git

在版本控制过程中, 同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。

【Git】Git的分支操作_暂存区_02

使用分支意味着程序员可以把自己的工作从开发主线(图中的master)上分离开来,开发自己分支(图中的​feature-game​​feature-blue​​hot-fix​)的时候不会影响主线分支的运行。

对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本,最终的项目就是各副本的合并。(分支底层其实也是指针的引用)

分支的好处:

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

返回顶部


二、分支的操作

2.1 查看分支

  • git branch -v

【Git】Git的分支操作_git_03


2.2 创建分支

  • git branch 分支名

【Git】Git的分支操作_返回顶部_04

可以看到,我们创建了新的hot-fix分支。


2.3 切换分支

  • git checkout 分支名

【Git】Git的分支操作_返回顶部_05

切换分支后,可以看到当前的分支处在hot-fix上。

此时我们在hot-fix分支上进行文件修改:

【Git】Git的分支操作_暂存区_06

修改之后,我们将其添加到暂存区,查看本地库状态:

【Git】Git的分支操作_返回顶部_07

进行一次提交,再次查看文件信息:

【Git】Git的分支操作_返回顶部_08


2.4 合并分支

当我们切换回master分支的时候,神奇的一幕出现了,我们的文件又回到了​hot-fix​修改之前的,这是因为我们的修改操作都是在​hot-fix​分支下做的,​master​分支中并没有。

【Git】Git的分支操作_暂存区_09

如果想要实现不同分支的操作同步到master主支上,就需要进行合并分支​git merge 分支​操作。

【Git】Git的分支操作_返回顶部_10

这个时候,就会将hot-fix分支上的内容合并到当前的​master​主分支上了。


2.5 合并冲突

冲突产生的原因:合并分支时,两个分支在同一个文件的同一个位置有两套完全不同的修改。 Git 无法替我们决定使用哪一个,必须人为决定新代码内容。

首先我们在master分支上进行文件修改:

【Git】Git的分支操作_暂存区_11

然后在hot-fix分支上进行文件修改:

【Git】Git的分支操作_返回顶部_12

接着试图合并两个分支,会发现报了冲突的错误:

【Git】Git的分支操作_git_13

此时我们打开文件:

【Git】Git的分支操作_git_14

hello world!
hello git!
进行一次修改 [hot-fix]
<<<<<<< HEAD
master test # 表示当前分支的内容
=======
hot-fix test # 表示要合并的分支的内容
>>>>>>>

此时我们需要手动保留需要的内容,去掉多余的内容以及提示信息:

hello world!
hello git!
进行一次修改 [hot-fix]
master test
hot-fix test

然后接着将文件添加到暂存区,进行提交(注意提交的时候不能添加文件名):

【Git】Git的分支操作_git_15

还要注意的是此时的合并仅对当前分支master有效,​hot-fix​分支并没有被合并:

【Git】Git的分支操作_git_16

master​hot-fix​ 其实都是指向具体版本记录的指针。当前所在的分支,其实是由 ​HEAD​ 决定的。所以创建分支的本质就是多创建一个指针。

  • 【Git】Git的分支操作_暂存区_17

  • HEAD如果指向​master​,那么我们现在就在 ​master​分支上。
  • HEAD 如果执行 ​hot-fix​,那么我们现在就在 ​hot-fix​ 分支上。

所以切换分支的本质就是移动 HEAD 指针。

返回顶部