小朋友,你是否知道分离头指针呢?
  TEZNKK3IfmPf 2024年03月29日 63 0

本文的主要围绕着下面这个问题展开的,在阅读之前可以先自己思考一下问题的答案是什么?

  • HEAD怎么理解?
  • 分离头指针是个什么玩意?

HEAD翻译为“头部”,在Git中我们一般称为“头指针”,主要表示当前工作区基于哪个版本进行开发,也可以理解为当前开发所在分支的最后一次提交

我们一般切换分支都是使用已经创建的分支,例如git checkout master。另外还有一种操作,就是基于某次提交记录(git checkout commit版本号),如下图所示

小朋友,你是否知道分离头指针呢?

这种操作切换的工作区没有在任何一个分支上面,与任何一个都没有关系。如果后续没有进行保存,在这个上面做的修改会被 git 彻底丢弃。

从提示信息我们可以看出这是出于detached HEAD的状态,网上解释说这是分离头指针的状态,总感觉有点怪怪的。说人话这就是一种在分支之外的开发状态。


此时我们通过查看.git/HEAD文件会发现,里面原来存放的分支名称变成了提交记录的版本号。正是我们上面切换分支时使用的提交记录版本号。

小朋友,你是否知道分离头指针呢?

如果我们做了修改,并且提交修改记录,以前的分支名变成了detached HEAD 最新的提交版本号,提示信息会发现如下所示

小朋友,你是否知道分离头指针呢?

如果这时候我们需要切回其他分支,Git 会给我们一些提示信息,告知我们有一些修改没有关联分支,并且给了我们新建分支的建议。

小朋友,你是否知道分离头指针呢?

想要保存原来在无分支状态做的修改,可以使用基于提交记录新建分支的命令

git branch <new-branch-name> a8dfef1

除此之外,我们还可以使用其他方式保存这些修改。当我们处理分离头指针的状态时,我们可以使用下面的命令创建分支。

git switch -c <new-branch-name>

假设我们不想创建新的分支,我们还可以直接把内容合并到其他分支,比如我们想把内容合并到dev分支,则可以借鉴下面的命令。

# 切换到需要合入代码的分支
git checkout dev
# 使用分离头指针状态下提交记录的版本号
git merge <commit版本号>

小朋友,你是否知道分离头指针呢?

那么分离头指针操作,适合的场景都有哪些呢?

如果我们想基于某次提交做一些新的尝试,而且不确定这些代码要不要合入正式分支的时候,可以使用这种方式。在上面的修改不会影响其他分支的现有状态,也不用创建新的分支。

如果修改以后发现方案行不通,可以直接切换到其他分支,这里的修改后面会被Git丢弃掉。如果需要保存的话,可以创建新的分支,或者把修改的代码合入某个分支。

小朋友,你是否知道分离头指针呢?

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2024年03月29日 0

暂无评论