Skip to content

第四章:Git分支管理 ​

image-20220603212114077

1. 什么是分支 ​

在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独 分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是 一个单独的副本。(分支底层其实也是指针的引用)

image-20220603213024055

2. 分支的好处 ​

同时并行推进多个功能开发,提高开发效率。

各个分支在开发过程中,如果某一个分支开发失败,不会对其他分支有任何影响。失败 的分支删除重新开始即可。

3. 分支的操作 ​

命令名称作用
git branch 分支名创建分支
git branch -v查看分支
git checkout 分支名切换分支
git merge 分支名把指定的分支合并到当前分支上

3.1 查看分支 ​

3.1.1 基本语法 ​

git
git branch -v

3.1.2 案例实操 ​

image-20220603213539779

*代表当前所在的分区

3.2 创建分支 ​

3.2.1 基本语法 ​

shell
git branch 分支名 # 创建分支

git checkout -b 分支名 # 创建并切换分支

3.2.2 案例实操 ​

image-20220603213745130

hot-fix 320a5c7 第二次提交 :这个是刚创建的新的分支,并将主分支master的内容复制了一份

3.3 删除分支 ​

shell
git branch -d 分支名

3.4 修改分支 ​

  • 在master分支上做修改

image-20220604131127033

  • 将修改后的文件添加到暂存区

image-20220604131220484

  • 提交到本地仓库

image-20220604131327908

  • 查看分支
    • hot-fix 分支并未做任何改变

      当前 master 分支已经更新为最新一次提交的版本

image-20220604131408580

  • 查看master分支上的内容

image-20220604131603843

3.5 切换分支 ​

3.5.1 基本语法 ​

git
git checkout 分支名

3.5.2 案例实操 ​

git
git checkout hot-fix

image-20220604131737886

发现当前分支已经从 master 切换到了 hot-fix 分支。

查看 hot-fix 分支上的文件内容发现与master分支上的内容不同

image-20220604132126474

3.6 合并分支 ​

3.6.1 基本语法 ​

git
git merge 分支名

3.6.2 案例实操 在 master 分支上合并 hot-fix 分支 ​

image-20220604132646797

3.7 产生冲突 ​

产生冲突的表现:后面状态为 ==MERGING==

image-20220604132904427

产生冲突的原因:

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

查看状态(检测到有文件两处修改)

image-20220604133102237

3.8 解决冲突 ​

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

特殊符号:<<<<<<< HEAD 当前分支的代码 ======= 合并过来的代码 >>>>>>> hot-fix

image-20220604133738328

3.8.2 添加到暂存区 ​

git
git add hello.txt

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

git
git commit -m '提交冲突合并'

image-20220604133635083

发现后面 MERGING消失,变为正常

4、创建分支和切换分支图解 ​

image-20220604133903434

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

HEAD 如果指向 master,那么我们现在就在 master 分支上。

HEAD 如果执行 hotfix,那么我们现在就在 hotfix 分支上。

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

Released under the MIT License.