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

简介: 本文的主要围绕着下面这个问题展开的,在阅读之前可以先自己思考一下问题的答案是什么:HEAD怎么理解? 分离头指针是个什么玩意?

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

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

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

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

image-20220406205557388.png

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

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


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

image-20220407111307732.png

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

image-20220407112850439.png

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

image-20220407113153814.png

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

git branch <new-branch-name> a8dfef1

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

git switch -c <new-branch-name>

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

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

image-20220407114547191.png

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

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

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

总结

分离头指针.png

目录
相关文章
activity中加载fragment的控件 在fragment 中调用activity中的控件
activity中加载fragment的控件 在fragment 中调用activity中的控件
|
存储 算法 开发工具
git文件夹内容详解
git文件夹内容详解
937 1
|
存储 开发工具 git
Git 学习----基本概念
理解这些基本概念是掌握 Git 操作的重要基础,它们为有效地管理项目的版本和开发过程提供了支持。通过不断实践和使用 Git,开发者可以更加高效地协作和管理项目的演变
|
存储 关系型数据库 数据挖掘
通义灵码与亚马逊 AWS 的融合之道
本文介绍了通义灵码与亚马逊AWS的深度融合,通过生成部署代码及与AWS服务的集成,如EC2实例创建、RDS数据库配置、S3存储设置和Lambda服务集成等,极大提升了开发者的开发效率和应用的智能化水平。总结部分强调了这一融合为开发者带来的技术助力,推动了应用开发向更高效、智能的方向发展。
通义灵码与亚马逊 AWS 的融合之道
|
Linux
gpio_direction_output 和 gpio_set_value之间的关系
gpio_direction_output 和 gpio_set_value之间的关系
965 0
|
存储 移动开发 前端开发
HTML动态爱心
HTML动态爱心
356 1
|
数据安全/隐私保护
vue-img-cutter 图片裁剪详解
vue-img-cutter 图片裁剪详解
517 1
|
算法 NoSQL Linux
Linux C++环境下避免死锁的全面策略解析与实践指南
Linux C++环境下避免死锁的全面策略解析与实践指南
310 0
|
存储 前端开发 JavaScript
Web前端主题色更换实现方式全解析(二)
Web前端主题色更换实现方式全解析(二)
516 0