【学了就忘】Git分支 — 44.分支切换的几种情况

 我来答
抛下思念17
2022-07-06 · TA获得超过1.1万个赞
知道大有可为答主
回答量:6169
采纳率:99%
帮助的人:33.6万
展开全部

这个案例我们要对切换分支命令进行详细说明。

在我们切换分支,执行 git checkout master 这条命令的时候,

Git做了如下两件事情:

也就是说: 分支切换会改变你工作目录中的文件

说明: 在切换分支时,一定要注意你工作目录里的文件会被改变。如果是切换到一个较旧的分支,你的工作目录会恢复到该分支最后一次提交时的样子。如果Git不能干净利落地完成这个任务,它将禁止切换分支。

下面我们就来详细的进行说明。

1)查看工作目录中的状态

2)新建一个testing分支,并提交一个a.txt文件到版本库

3)查看 testing 分支的文件

4)切换到master分支

如上就可以证明了,切换分支时,工作目录中的文件会发生改变。

如果切换分支的时候,该分支的工作目录不是已提交状态,那么会出现如下两种情况。

也就是有以修改或新增,未被追踪的文件。

1)切换到 testing 分支

2)在 testing 分支新增一个文件 b.txt ,但不添加到暂存区

显示 b.txt 文件未被追踪。

3)此时切换到 master 分支上

我们从上面可以看到,在 testing 分支上创建的,新增未被追踪的 b.txt 文件,被同步到了 master 分支上。

因为 git checkout 命令执行时,会将工作目录里的文件改变到指定的提交状态。

又因为你在 testing 分支上创建的 b.txt 文件,既没有被提交也没有被暂存,说明 b.txt 文件还未被Git管理。在这种情况下,你进行切换分支操作,你将丢失在 testing 分支对 b.txt 文件编写。Git认为这样是非常不安全的操作,会默认的把该状态的文件,一起带入所切换到的分支中。

所以 git checkout 命令还是很智能的,可以我们一般不会用该功能,这个功能用来会非常的混乱,可能会污染到其他分支,尽管Git是好意。

也就是暂存区有新增的文件时,但还未提交到本地版本库。

(接上面示例,继续演示)

1)切换到 testing 分支上,把b.txt文件添加到暂存区

2)此时切换到 master 分支上

发现暂存区中存储的文件,只要未被提交,也会随着分支的切换,加入到其他分支中。

(接上面示例,继续演示)

1)切换到 testing 分支上,把 b.txt 文件提交到版本库

2)继续修改 b.txt 文件,不提交到版本库中,然后切换到master分支

说明:

error: Your local changes to the following files would be overwritten by checkout:b.txt

错误提示: b.txt 文件在本地的更改,将随着切换分支的操作,被版本库所覆盖(也就是文件被还原)

Please commit your changes or stash them before you switch branches.

提示你,在切换分支之前,请先提交更改。(不提交不让你切换分支)

这是什么原因?

因为 b.txt 文件已经被Git管理过了,如果 b.txt 文件还处于修改未追踪状态,你就必须 b.txt 文件修改完成并提交后,再去其他分支工作。

使用 git checkout 命令进行分支的切换,实际上有三个地方更改了

而切换分支的最佳实践:每次切换分支前,确保当前分支一定得是干净的(已提交状态)。

因为要避免一下情况:

在切换分支时,如果当前分支上有新增且未暂存的修改(第一次),或者有新增,暂存,但未提交的修改(第一次)时,分支可以切换成功,但是这种操作可能会污染其地分叉。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
TableDI
2024-07-18 广告
VLOOKUP 是 Excel 中一个非常实用的函数,它允许用户在一个区域或表格的首列中查找特定值,并返回同一行中指定列中的值。当进行跨表匹配时,你可以使用 VLOOKUP 函数将两个不同表格中的数据关联起来。通过指定查找值、表格数组、列号... 点击进入详情页
本回答由TableDI提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式