【Git】分支管理的基本操作

发布于:2024-04-28 ⋅ 阅读:(30) ⋅ 点赞:(0)

理解分支

分支管理是git的一个核心功能。在git中,分支是用来独立开发于某个功能或者修复某个bug的一种方式。就像是《火影忍者》中的鸣人使用分身去妙蛙山修炼,最后还能将所有的修炼经验返还给本体一样。git支持分支的同时,也支持将这些分支合并到master上了。

分支的本质

每一个分支都有一个指针指向最新的提交,就好比我们的master指向的就是主分支的最新提交。而HEAD指针指向的就是当前的工作分支。切换HEAD的指向,就相当于在切换分支。
在这里插入图片描述

主分支

Git 默认创建的第一个分支是 master 分支(或 main 分支)。它通常被认为是主要开发线的起点。所以我们说的主分支一般都是指master分支。

创建分支

考虑使用以下指令创建分支

git branch newbranch

创建一个名为newbranch的新分支
直接使用git branch可以查看当前分支:
在这里插入图片描述
查看.git/HEAD文件内容就能直到当前HEAD指向哪一个分支:
在这里插入图片描述
在这里插入图片描述

切换分支

使用git checkout指令切换当前分支,即切换HEAD指向的分支:
在这里插入图片描述

在这里插入图片描述
当我们成功切换分支之后,所有的提交都是在新的分支上。
注意,在新的分支上的提交是不会干扰master分支的,且也看不到后续master分支的提交信息----“你走你的,我走我的

合并分支

当我们试图将分支上的提交重新整合到master,即需要合并某个分支时,考虑git merge指令(切换到master分支执行):
在这里插入图片描述
git merge 命令⽤于合并指定分⽀到当前分⽀。合并后,master就能看到dev分⽀提交的内容了
在这里插入图片描述

fast-forward模式

fast-forward模式是分支合并时的一种简单情况,通常用于将一个分支的更改合并到另一个分支时。“Fast-forward” 合并的优点是简单快速,因为它只是移动指针而不需要额外的合并步骤。但它也有一个缺点,即不会保留合并操作的历史信息,因为合并操作并没有实际发生。

删除分支

考虑以下指令git branch -d devdev为要删除的分支:
在这里插入图片描述
注意如果现在就在dev分支下是不能删除dev分支的,需要先切换分支。
在这里插入图片描述
通常来说,我们一般合并完某个分支之后,会将这个分支删除。就像是创建子进程去完成任务回来之后,也就不需要它了。

合并冲突问题

分支合并并非每次都能成功,有的时候会发生合并冲突的问题。这种冲突一般是两个分支对同一个文件的同一个部分进行了修改,当要合并的时候git无法确定合并这些修改。

比如我们现在master分支下有一个readme文件,该文件内容为:
在这里插入图片描述
接下来我们创建一个dev分支,在master分支和dev分支中同时修改readme文件中的第二行内容并提交到版本库中。
master分支下:
在这里插入图片描述
在这里插入图片描述
master分支下:
在这里插入图片描述
接下来合并:
在这里插入图片描述
提示合并冲突,因为这时候两个分支对同一文件的同一行内容做出修改,git不知道该怎么合并。且readme文件会保留冲突信息,Git会⽤<<<<<<<,=======,>>>>>>>来标记出不同分⽀的冲突内容,如下所⽰:
在这里插入图片描述

这个时候只能手动编辑冲突的文件,将冲突的部分修改为满足需求的版本。可以将某个分支的修改删除,保留另一个。或者结合一下两者的修改。
解决冲突:
在这里插入图片描述
一定要提交修正后的结果
在这里插入图片描述
另外,用指令git log --graph --pretty=oneline --abbrev-commit可以较为形象的看到分支的合并情况:
在这里插入图片描述


网站公告

今日签到

点亮在社区的每一天
去签到