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
相关推荐
孟俊宇-MJY3 小时前
Ansible自动化运维
git·github
笨拙的老猴子3 小时前
Git 翻车现场:那些年我 git push --force 毁掉的东西
git·代码管理
GitCode官方3 小时前
投稿|Git + Docker 零基础入门攻略
git·docker·容器
_可乐无糖4 小时前
Windows本地安装git
git
2301_780029044 小时前
.gitignore不可以忽略文件问题
git·gitee·开源
饕餮争锋5 小时前
PR中的P为什么是pull而非push?
git
水云桐程序员5 小时前
Git是什么?怎样使用?
git·学习方法
Allen_LVyingbo5 小时前
面向医疗群体智能的协同诊疗与群体决策支持系统(上)
数据结构·数据库·人工智能·git·python·动态规划
deng-c-f5 小时前
配置(14):git创建分支,跟确保正确提交分支
git