Git之创建、合并、删除分支

tech2025-12-24  2

Git中的分支并不是我们所理解的类似于岔路口的那种,其实这里的分支更多的则是类似于我们所说的平行宇宙。简单来说就是你在做这件事情的时候完全不影响另一件事情的发展,也就是说,你本人在这个宇宙里做着这件事,另一个你在平行宇宙里做着和你不一样的另一件事,到了某个时间节点,你发现,两件事情你都做了。

那么分支到底有什么实际作用呢?我们还是通过例子来说明吧,假如现在有一个半成品的项目,大概完成了50%,你现在正在开发一个新的功能,完成之后,这个项目整体的完成度就会是70%,但是你现在的这个功能只开发了50%,此时老板为了提前交付,准备剩下的那占了整体项目30%的功能由另一个同事开发。但是你们俩的功能都要依赖已经开发好的那50%,如果你此时提交你的部分功能,那么由于你的功能还未开发完整,所以肯定会导致后续功能受阻,但是如果你不提交的话,就会影响整体的项目进度。现在,有了Git分支的概念后,这一切都变得简单了。你在之前的项目节点处创建一个分支,然后在你自己的这个分支开发你未完成的功能,不会影响到其他人的进度,也不会影响到项目进展。当你把自己的功能开发完毕后,再合并到之前的项目中即可。

虽然SVN等集中式版本控制系统也有类似的分支管理功能,但是这些版本控制系统对于分支的创建和切换操作速度很慢,而Git就不一样,Git的创建和切换分支操作速度都相当快!

创建分支

在Git中,对于我们每次提交的文件,Git都会把它们串成一条时间线,这条时间线其实就是一个分支,即master分支,也就是Git为我们自动创建的分支,通常我们称这个分支为主分支。我们之前所说过的HEAD指针其实就是指向master的,而master才是指向最近提交的节点的,即master指向最新的commit。

当有一次提交时,master就会自动向前移动,随着提交越来越多,master分支也就越来越长。当我们创建新分支时,Git就会创建一个新的指针,指向和master相同的提交,然后让HEAD指向这个新创建的指针。比如说我们创建一个dev的分支。

master和dev指向了相同的提交,而HEAD指向了dev,表示当前分支是在dev上。所以,Git创建新分区的速度其实是很快的,只需要增加一个指针,然后改变HEAD的指向即可。

创建并切换分支其实是两个过程,但是在Git中,这两个过程可以合为一步完成。

git checkout -b dev

 

git checkout命令配合-b参数使用表示创建并切换到相应分支。其实就相当于

 

创建并切换之后我们可以使用git branch命令来查看当前分支

 

此命令会列出所有分支,并在当前分支之前使用“*”标记。然后我们就可以在dev分支上对之前的demo.txt文件进行修改了。

 

修改完成之后,提交

 

现在我们假定当前dev分支的工作已经全部完成,此时

由于我们是在dev分支上进行开发的,所以新提交一次后,dev指针就往前移动一步,指向最新的提交,而master指针不变。此时,由于在dev分支上的工作已经完成,我们需要将dev分支合并到master上。合并之前,我们先要将分支切换到master上。

 

之后,验证一下demo.txt的内容,看是否已经被修改。

 

其实此时的demo.txt文件并没有被修改,因为我们修改的是dev分支上的demo.txt,而此时我们是在master分支上。然后我们合并分支

 

合并之后,此时的HEAD指针便指向了master,而master和dev同时指向的是最新的提交。

此时我们查看一下demo.txt的内容,看是否已经被修改。

 

如果此时我们认为dev分支已经完成了它的使命,暂时不需要它的存在了,那么此时我们就可以将其删掉。

 

删除之后,我们再使用git branch命令查看分支,发现只有master一个分支了。

 

因为Git中创建、合并分支的速度非常快,而且又不影响master分支,整个分支开发过程较安全,所以一般在实际开发中,鼓励使用分支开发。

命令说明git branch查看分支git branch <name>创建分支git checkout <name>切换分支git switch <name>切换分支git checkout -b <name>创建并切换分支git switch -b <name>创建并切换分支git merge <name>合并分支git branch -d <name>删除分支

 

 

 

最新回复(0)