第三节:Git分支管理(关键词:git branch、git checkout、git diff、git merge、查看、创建、切换、对比分支)

本节涉及Git命令

  • git branch:列出全部分支
  • git branch <name>:创建分支
  • git checkout <name>:切换分支
  • git diff <branch1> <branch2>:对比两个分支
  • git diff --quiet <branch1> <branch2>:对比两个分支是否存在差异,但不显示细节
  • git diff <branch1> <branch2> <filename>:对比两个分支中某个具体文件差异
  • git merge:合并分支
  • git branch -d <name>:删除分支

一:分支管理概述

分支的存在,极大的强化了不同开发者的协作管理,在一个功能的开发过程中,可以在一个单独的分支上完成,这样不影响主分支的开发,待功能完成后再将分支的内容合并到主分支

在这里插入图片描述

使用git branch命令可列出所有已经存在的分支,其中标有*表示这是当前工作分支,默认状态下只有一条主分支master

在这里插入图片描述

每次提交到分支,Git都会把它们传成一条时间线,这条时间线就是一个分支。master或其它分支名本质是一个指针,它们指向的是该分支上最新的提交,然后我们会用前面所介绍的HEAD指针指向master或其它分支名

在这里插入图片描述

如上图,在我们之前的工作中,一直都在master分支上进行,因此每次提交,master分支都会向前移动一步。当我们创建一个新的分支时,假如名字叫做dev,Git就会新建一个指针dev,指向master上相同的提交,当我们切换分支时,再把HEAD指向dev即可

在这里插入图片描述

从现在开始,对工作区的修改和提交就都是针对dev分支了。例如新提交一次后,dev指针向前移动一步,而master指针不变

在这里插入图片描述

假如我们在dev上的工作完成了,就可以把dev合并到master上,直接让master指向dev即可

在这里插入图片描述

合并完成后,也可以删除dev分支

在这里插入图片描述

二:相关基本操作

(1)查看分支

作用:使用git branch命令可以查看目前存在的分支,其中当前所在的分支会用*标记

例子

如下,可以发现,目前仅仅存在mater这一条分支

  • 从项目创建之初,有且唯一的分支就是主分支,主分支被叫做 master。git 的 master 分支并不是一个特殊分支,它就跟其它分支完全没有区别。之所以几乎每一个仓库都有 master 分支,是因为 git init 命令默认创建

在这里插入图片描述

(2)创建分支

作用:使用git branch <name>可以创建一条名为<name>的分支。在一般项目开发中,会创建以下几种类型的分支

  • 主分支(master:主分支是代码库的主要分支,通常用于发布稳定版本的代码。开发人员在主分支上提交的代码需要经过严格的测试和审核,确保代码的质量和稳定性。
  • 开发分支(develop:开发分支是用于日常开发的分支,通常从主分支分离出来。在开发分支上进行的所有工作都会集成到该分支上,直到该分支的功能完成并准备好发布稳定版本。
  • 功能分支(feature:功能分支是从开发分支分离出来的分支,用于开发特定的功能。在功能分支上进行的所有工作都与该功能相关,开发人员可以在该分支上独立开发,并在功能完成后将该分支合并到开发分支上。
  • 补丁分支(hotfix:补丁分支是用于修复已发布版本中出现的问题的分支,通常从主分支上分离出来。在补丁分支上进行的所有工作都是针对该版本的修复工作,修复完成后,将该分支合并回主分支和开发分支上。
  • 发布分支(release:发布分支是用于准备发布版本的分支,通常从开发分支分离出来。在发布分支上进行的工作包括准备发布版本所需的文档、测试、打标签等,一旦发布完成,该分支会被合并到主分支和开发分支上

例子

如下创建两条分支,分别用于开发和bug修复,名称分别为devbugfix

在这里插入图片描述

(3)切换分支

作用:使用git checkout <name>可进行分支之间的切换

例子

如下,我们将目前所在分支切换到dev

在这里插入图片描述

现在,在该分支上建立一个文件BranchTest.txt,在写入一些内容后提交

在这里插入图片描述

在这里插入图片描述

然后我们再次切换回主分支,你会发现刚才生成的BranchTest.txt不存在了
在这里插入图片描述

在这里插入图片描述

(4)分支对比

作用:使用git diff命令对两个分支进行差异对比,常用用法如下

git diff <branch1> <branch2> # 对比两个分支
git diff --quiet <branch1> <branch2> # 对比两个分支是否存在差异,但不显示细节
git diff <branch1> <branch2> <filename> # 对比两个分支中某个具体文件差异

例子

如下
在这里插入图片描述

(5)合并分支

A:合并分支

作用:使用git merge可以将两个分支进行合并

例子

如下,目前我们在master分支上,现在我们将dev分支上所做的更改合并至master分支

在这里插入图片描述

在这里插入图片描述

B:冲突合并

当Git尝试将两个分支合并时,如果两个分支都对同一个文件的相同部分进行了修改,就会发生冲突。在这种情况下,Git无法确定哪个更改是正确的,因此需要手动解决冲突

  • 将两个分支的文件,进行对比修改,满足两个分支的提交
  • 使用 git addgit commit 进行一次新的提交。(此时提交的是master分支)
  • 再次合并

例子

如下,切换回dev分支,这次我们对Hello.py文件进行修改

在这里插入图片描述

然后切换回master分支也对Hello.py文件进行修改,插入与之不同的内容

在这里插入图片描述

现在尝试合并,可以发现Git报错

在这里插入图片描述

其含义是需要我们手动处理冲突,使用git diff也可以查看到两个分支上文件的差异

在这里插入图片描述

现在,我们将master分支上的这个Hello.py文件最后一行删除

在这里插入图片描述

再次合并即可

(6)删除分支

**作用:使用git branch -d <name>**可将分支删除

例子
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_39183034/article/details/129880629