本节涉及Git命令
git branch
:列出全部分支git branch
:创建分支git checkout
:切换分支git diff
:对比两个分支git diff --quiet
:对比两个分支是否存在差异,但不显示细节git diff
:对比两个分支中某个具体文件差异git merge
:合并分支git branch -d
:删除分支分支的存在,极大的强化了不同开发者的协作管理,在一个功能的开发过程中,可以在一个单独的分支上完成,这样不影响主分支的开发,待功能完成后再将分支的内容合并到主分支
使用git branch
命令可列出所有已经存在的分支,其中标有*
表示这是当前工作分支,默认状态下只有一条主分支master
每次提交到分支,Git都会把它们传成一条时间线,这条时间线就是一个分支。master
或其它分支名本质是一个指针,它们指向的是该分支上最新的提交,然后我们会用前面所介绍的HEAD
指针指向master
或其它分支名
如上图,在我们之前的工作中,一直都在master
分支上进行,因此每次提交,master
分支都会向前移动一步。当我们创建一个新的分支时,假如名字叫做dev
,Git就会新建一个指针dev
,指向master
上相同的提交,当我们切换分支时,再把HEAD
指向dev
即可
从现在开始,对工作区的修改和提交就都是针对dev
分支了。例如新提交一次后,dev
指针向前移动一步,而master
指针不变
假如我们在dev
上的工作完成了,就可以把dev
合并到master
上,直接让master
指向dev
即可
合并完成后,也可以删除dev
分支
作用:使用git branch
命令可以查看目前存在的分支,其中当前所在的分支会用*
标记
例子:
如下,可以发现,目前仅仅存在mater
这一条分支
master
。git 的 master
分支并不是一个特殊分支,它就跟其它分支完全没有区别。之所以几乎每一个仓库都有 master
分支,是因为 git init
命令默认创建作用:使用git branch
可以创建一条名为
的分支。在一般项目开发中,会创建以下几种类型的分支
master
):主分支是代码库的主要分支,通常用于发布稳定版本的代码。开发人员在主分支上提交的代码需要经过严格的测试和审核,确保代码的质量和稳定性。develop
):开发分支是用于日常开发的分支,通常从主分支分离出来。在开发分支上进行的所有工作都会集成到该分支上,直到该分支的功能完成并准备好发布稳定版本。feature
):功能分支是从开发分支分离出来的分支,用于开发特定的功能。在功能分支上进行的所有工作都与该功能相关,开发人员可以在该分支上独立开发,并在功能完成后将该分支合并到开发分支上。hotfix
):补丁分支是用于修复已发布版本中出现的问题的分支,通常从主分支上分离出来。在补丁分支上进行的所有工作都是针对该版本的修复工作,修复完成后,将该分支合并回主分支和开发分支上。release
):发布分支是用于准备发布版本的分支,通常从开发分支分离出来。在发布分支上进行的工作包括准备发布版本所需的文档、测试、打标签等,一旦发布完成,该分支会被合并到主分支和开发分支上例子:
如下创建两条分支,分别用于开发和bug修复,名称分别为dev
和bugfix
作用:使用git checkout
可进行分支之间的切换
例子:
如下,我们将目前所在分支切换到dev
上
现在,在该分支上建立一个文件BranchTest.txt
,在写入一些内容后提交
然后我们再次切换回主分支,你会发现刚才生成的BranchTest.txt
不存在了
作用:使用git diff
命令对两个分支进行差异对比,常用用法如下
git diff <branch1> <branch2> # 对比两个分支
git diff --quiet <branch1> <branch2> # 对比两个分支是否存在差异,但不显示细节
git diff <branch1> <branch2> <filename> # 对比两个分支中某个具体文件差异
例子:
作用:使用git merge
可以将两个分支进行合并
例子:
如下,目前我们在master
分支上,现在我们将dev
分支上所做的更改合并至master
分支
当Git尝试将两个分支合并时,如果两个分支都对同一个文件的相同部分进行了修改,就会发生冲突。在这种情况下,Git无法确定哪个更改是正确的,因此需要手动解决冲突
git add
和git commit
进行一次新的提交。(此时提交的是master
分支)例子:
如下,切换回dev
分支,这次我们对Hello.py
文件进行修改
然后切换回master
分支也对Hello.py
文件进行修改,插入与之不同的内容
现在尝试合并,可以发现Git报错
其含义是需要我们手动处理冲突,使用git diff
也可以查看到两个分支上文件的差异
现在,我们将master
分支上的这个Hello.py
文件最后一行删除
再次合并即可
**作用:使用git branch -d
**可将分支删除