Git(2)—— 分支管理

本文主要讨论git中的分支管理。

什么是分支?

分支类似于平行时空,我们在提交文件的时候是有一条提交的时间线的,也就是主时间线;记录着对应时间节点文件的提交,而分支就可以在时间线上的某个节点另外创建一条时间线,可以另外记录不同的文件提交,这就是一个分支。

此外,分支创建后也可以进行合并,合并成一条时间线。

创建、切换和合并

下面我们学习如何来创建,切换和合并分支。

1、查看分支

bash 复制代码
git branch

通过 git branch 命令可以查看当前的分支。在创建git仓库时会默认生成一个master分支。在前面我们查看时看到head指针是指向master分支的,而head指向的分支就是当前正在使用的分支。

2、创建分支

创建分支还是使用git branch命令,只需要在后面加上分支名:、

bash 复制代码
git branch [分支名]

举个例子:

我们创建的DEV分支的起始节点是基于上一次提交的时间节点的。如果我们需要对DEV分支进行操作,那么就需要让head指针指向我们的DEV分支,也就是分支的切换。

3、切换分支

切换分支需要用到下面的指令:

bash 复制代码
git checkout [分支名]

【注意】git checkout表示切换分支;而git checkout --表示撤销工作区的内容。

可以看到成功切换到DEV分支了。

4、合并分支

如果需要将分支合并,首先需要将分支切换至要合并的那条分支。例如我们现在要合并到master分支,我们就需要首先选择master分支。

合并分支需要用到下面的命令:

bash 复制代码
git merge [被合并的分支名]

删除分支

删除分支的时候只能删除当前分支之外的其他分支。例如在上面的例子中,我们如果想要删除DEV分支,就需要先选中master分支后去删除dev分支,不能删除当前所在分支。

删除分支所需的命令如下:

bash 复制代码
git branch -d [分支名]

合并冲突

合并冲突为这样一种情况,现在两个不同分支有一个相同文件,在两个分支中分别对该文件做出了不同的修改,那么在合并的时候git应该保存哪一份文件呢?这样的一种情况就是合并冲突。

git会将这两个分支修改的代码都进行保存,并将冲突部分的代码使用===号间隔,提示这部分代码发生冲突,而到底应该保留哪一部分的代码,需要我们手动来决定,保留需要的代码,删除掉冲突的不需要的代码部分。

上面的图片中所展示的就是冲突部分代码。等号上面的是当前分支中的代码;等号下面是另一个合并进来的分支中的代码,该图中就是dev1分支中的代码。

且手动解决之后,一定不要忘记再提交一次!!!


合并模式

在合并提交的时候默认是使用的fast forward模式;当主分支没有新提交,分叉线是单向前进时,Git 不创建新合并提交,直接把主分支指针平移快进到功能分支最新节点。

简单来说就是主干没动的情况下,只有自己的功能分支往前写了代码,为了不搞复杂,直接把主干指针挪到自己的分支末尾。这样的一种合并方式。

此外,介绍另外一种合并方式:no-ff:哪怕满足快进条件,也强制不使用快进,主动生成一个新的 Merge 合并提交,保留分支分叉痕迹。

简单说就是 就算可以直接挪指针,也一定要留个记号,专门生成一个「合并节点」进行标记这是从哪个分支合过来的。

切换合并模式的命令如下:

bash 复制代码
git merge [模式名称] [分支名]

如果不填模式名称就是默认为fast forward模式。


强制删除分支

如果我们在开发过程中因为某些原因需要将该功能取消,我们所在当前分支就没用了,就需要将该分支删除。不过git会保护我们所创建的分支,在合并之前不会让分支被删除掉。那么这个时候就需要进行强制删除分支,命令和之前删除的命令一样,只不过把-d改为-D。

bash 复制代码
git branch -D
相关推荐
深海鱼在掘金2 天前
Git 完全指南 —— 第1章:Git 概览与版本控制演进
git
noravinsc3 天前
关于Git Flow
git
蜜獾云3 天前
在Git中配置用户名和密码
git
scx_link3 天前
通过git bash在本地创建分支,并推送到远程仓库中
开发语言·git·bash
南大白3 天前
IntelliJ IDEA 运行时的 JVM 本地内存溢出崩溃
git
码农小旋风3 天前
Claude Code 基础用法大全:对话、分析、修改、测试、Git 和工作流
人工智能·git·chatgpt·claude
南大白3 天前
Git 撤回提交完整方案
git
像风一样的男人@3 天前
python --实现代理服务器
git·ui
sbjdhjd3 天前
从零搭建企业级 CI/CD(下):Jenkins+GitLab+Harbor 全链路实战指南
git·servlet·ci/cd·云原生·云计算·gitlab·jenkins
码云数智-大飞3 天前
Go Channel 详解:并发通信的正确姿势
前端·数据库·git