detached HEAD意义详解

git分离头指针(detached HEAD)状态处理 确保你在进行分支操作之前提交或者保存你的更改。如果你已经在分离状态下进行了一些工作,你可以创建一个新的分支,并将这个分支合并到你想要的分支上,以确保你的更改得以保留。注:在 repo 和多仓库项目中,确保你在执行同步操作时,是在一个已经存在的分支上。如果你在一个新的仓库上工作,你可能需要首先创建并切换到一个分支。当我们的工程处于分离头指针(detached HEAD)状态时,就会出现这样的现象。今天用repo同步了一个工程,但状态很奇怪,用。如果你想要在一个分支上工作,你可以使用。命令来切换到一个分支。 阅读详情
        概述:在使用git的过程中,我们常常会对其中的HEAD感到疑惑:HEAD是什么意思?表示当前分支吗?什么是处于游离态的commit点?等等,这些都和一个叫做detached head的状态有关,我们来看看它的真面目。
    
        通常情况下,HEAD指向一个分支;同时,每一个分支对应一个特定的commit(确切的说,一个分支上可以有多个commit,但是只有一个顶层commit,而且commit之间是简单的线性关系)。我们来看下面这个包含三个commit的例子,其中目前在master分支上。
                      HEAD (refers to branch 'master')
                        |
                       v
           a---b---c  branch 'master' (refers to commit 'c')
                 ^
                  |
             tag 'v2.0' (refers to commit 'b')


        在这样的状况下,如果进行一次提交,当前分支将指向新的提交点。具体来说,git commit创建了一个新的commit id,它的父节点是的commit的id是C。这个时候,HEAD仍然指向master分支,而且指向commit id是d的提交点。
       
    $ edit; git add; git commit

HEAD (refers to branch 'master')
                             |
                             v
           a---b---c---d  branch 'master' (refers to commit 'd')
                ^
                |
             tag 'v2.0' (refers to commit 'b')



       有时,如果能够检出到一个不在分支顶端的commit点是很有用的(通常情况下,我们直接运行命令git checkout mater,这样checkout到master的最新commit上);同样,如果能够创建一个不属于任何分支的提交点也是一件很有用的事情。运行接下来的两条命令,看看会发生什么。
       
    $ git checkout v2.0  # or
    $ git checkout master^^


HEAD (refers to commit 'b')
               |
               v
           a---b---c---d  branch 'master' (refers to commit 'd')
               ^
               |
             tag 'v2.0' (refers to commit 'b')    
  

    注意,现在head已经指向commit b,这就是所谓的dedatched head状态。从这里我们也可以看出,head是当前index的状态,而不是当前分支(的最近commit节点)。这仅仅意味着head指向某个特定的commit点,而不是指向每一个特定的分支(的顶端节点)。如果我们此时提交一个commit,看看将要发生什么:

   

        $ edit; git add; git commit


HEAD (refers to commit 'e')
                 |
                 v
                 e
                /
           a---b---c---d  branch 'master' (refers to commit 'd')
               ^
               |
             tag 'v2.0' (refers to commit 'b')

    注意,此时产生了一个新的提交点,但是它只能被head索引到,不属于任何一个分支。当然,我们还可以给在这个“无名分支”的基础上继续提交。
          
 $ edit; git add; git commit

                    HEAD (refers to commit 'f')
                      |
                      v
                 e---f
                /
           a---b---c---d  branch 'master' (refers to commit 'd')
               ^
               |
             tag 'v2.0' (refers to commit 'b')

     实际上,我们可以进行任何git的常规操作。但是,让我们开看看如果我们运行git checkout master将会发生什么:
          

 $ git checkout master


 HEAD (refers to branch 'master')
                 e---f     |
                /           v
           a---b---c---d  branch 'master' (refers to commit 'd')
               ^
               |
             tag 'v2.0' (refers to commit 'b')

 此时,我们一定要注意,e f已经处于无法被索引到的状态。最终e和f将被git的默认回收机制所回收,除非我们在它们被回收之前创建一个指向他们的索引。如果我们没有从commit f离开的话,可以用接下来的命令创建一个指向f的索引。        
   
$ git checkout -b foo   (1)
$ git branch foo        (2)
$ git tag foo           (3)

1.创建来一个foo分支,指向f,接着更新head指向分支foo,此时,我们不再处在detached head的状态
2.同样创建了一个foo分支,但是head仍然指向master分支,仍然处在detached head的状态。
3.创建了一个新标签foo,仍处于detached的状态。
        如果我们从f处离开,我们必须首先恢复他的主体名称,接着我们才可以创建指向它的索引。例如,为了看看最近的两个由head指向的commit点,我们可以使用如下的命令:   
        
$ git reflog -2 HEAD # or

$ git log -g -2 HEAD


参考文献:man  git-checkout
ArcGIS实战:用栅格数据为偏远山区规划一条最省钱的公路(附完整数据与操作步骤) 本文详细介绍了如何利用ArcGIS进行栅格数据分析,为偏远山区规划一条最省钱的公路。通过DEM高程数据处理、成本权重设定和最佳路径计算,结合真实案例展示了从数据准备到工程方案转化的完整流程,帮助工程师在复杂地形中做出经济高效的路线决策。 阅读详情

相关推荐

FoundationPose实战:从零部署到Demo运行全记录

本文详细记录了FoundationPose从零部署到Demo运行的全过程,包括Ubuntu环境配置、项目部署、依赖安装及常见问题解决方案。特别针对复现过程中的关键步骤如CUDA版本选择、Eigen3安装等提供了实用技巧,帮助开发者高效完成FoundationPose的部署与调试。

weixin_27102543的博客 269

detached HEAD的原因及解决

A-----B-----C 分别有A、

yjl2055的博客 1万+

从涡流求解器到瞬态场:Maxwell 3D里无线充电仿真,选对求解器能省一半计算时间

本文深入探讨了Maxwell 3D在无线充电仿真中涡流求解器与瞬态求解器的选择策略,帮助工程师优化计算效率与精度。通过对比分析两种求解器的适用场景、性能差异及实战技巧,揭示如何根据频率特性、材料非线性和动态过程需求做出精准选择,可节省高达50%的计算时间。特别针对3D线圈模型的无线充电系统设计提供了专业建议。

weixin_26861329的博客 232

git 为什么会出现detached head

在 Git 中,detached head 状态是指你的当前的 HEAD 指针指向的不是一个分支,而是一个单独的提交。这通常是因为你切换到了某个提交的历史记录上,或者是因为你在分支上 cherry-pick 了一个提交。 例如,当你使用 git checkout <commit> 命令时,你就会进入 detached head 状态。这是因为这个命令会将 HEAD 指针直接移动到给定的...

weixin_35756637的博客 1704

ST7102驱动移植与调试实战

本文详细介绍了在君正T40平台上移植和调试ST7102 LCD驱动芯片的实战经验。内容涵盖硬件接口配置、时序参数调整、寄存器初始化序列编写及常见问题解决,重点解析了ST7102单芯片集成显示与触控功能的特性,为嵌入式设备显示驱动开发提供实用指南。

k6l7m8n9的博客 1413

ENSP内使用wireshark进行抓包,并且解析icmp报文

前四位:54 89 98 e8 20 38 为ip报文包的mac地址也就是物理地址。一开始进行抓包是没有icmp报文的,需要我们在ensp中使用pc1请求联通pc9。协议编号后分别为:ip版本、ip首部报文长度、服务类型、ip报文总长度。最后为校验和 、源ip地址、目的ip、从08 00开始为真正的数据。我们需要实验的端口为:0/0/4,也就是抓包第三个交换机内的报文。其中显示的icmp报文就是我们需要解析的ip报文。源mac地址后跟着的就是协议编号: 08 00。根据ip报文包的结构我们进行解析。

2301_81713278的博客 2139

Git detached head的解决方法

detached head是一种HEAD指针指向了某一个具体的 commit id,而不是分支的情况。在这个状态下进行的commit不会对你的远程分支产生影响。先看看detached head状态下是什么情况: 1.从远程库clone下来一个远程的repository: 2. clone下来之后,git自动在本地建立了一个本地分支master,并自动与远程库master关联。此时指

Futureer的专栏 1万+

新华硕笔记本ubuntu18.04双系统安装之后,wifi没有显示无法链接wifi

本来我以为跟简单安装一个wifi网卡的驱动就可以解决的问题,没想到花了我一早上的时候解决… 惭愧。 另外,本来是没打算写这篇博客的,但是我在搜索解决这个问题的过程中, 发现多人提出的解决方案跟我的都不一样,甚至我的解决方案都没有搜到相应的答案,还是只能靠自己啊。。 言归正传,还是说说怎么正确的安装wifi驱动吧! 1. wifi没有正确安装、或没有正确配置的表现 我的电脑现象: 有wifi图标, wifi设置上显示unaviable,无法搜索到任何wifi; 还有其他类似的表现,大家可以看看其他朋友的提

Ian的博客 1889

Git 核心概念详解:HEAD、游离 HEAD、origin/HEAD、ORIG_HEAD 和 FETCH_HEAD

读书笔记:担心大佬文章搬家,故整理此学习笔记。

张紫娃的博客 3388

从零实战:模拟Soul/陌陌附近的人接口爬虫(设备指纹·加密逆向·动态代理全解)

在移动互联网流量见顶的今天,LBS(基于位置的服务)社交平台——尤其是Soul和陌陌——依然掌握着海量高活用户的地理位置画像、兴趣标签、在线活跃时段等敏感数据。对于市场调研、流量运营、甚至是城市热力分析而言,“附近的人”接口是一个极具价值的入口。然而,这两款App均采用全参数加密 + 设备指纹风控 + WAF动态防御的三重护城河。直接使用Requests库调用公开API无异于以卵击石。本文将从逆向工程视角出发,完整还原一套可用的附近人信息采集方案,涵盖:抓包与流量分析(绕过SSL Pinning)

2201_76125261的博客 211

ARM CoreLink 系列 5.1.1 -- CI-700 System Address Map 】

所有的CHI 命令都包含一个 Source ID 和 Target ID, 其中 Source ID 可以来自于 RN Node, Target ID 可以来自于HN node或者其他 SN node. 其中 Target ID 是通过 SAM解析传入的地址得到的。对于 CI-700中的所有 RN Node 中的 SAM 多会进行配置,因为RN Node 访问的是整个地址空间,不同的地址空间会有不同的属性(I/O, DRAM),所以会对RN SAM 配置多个不同属性的区域。

CodingCos的博客 771

【git 基础】detached HEAD意义详解 (非顶端分支的理解)

概述:在使用git的过程中,我们常常会对其中的HEAD感到疑惑:HEAD是什么意思?表示当前分支吗?什么是处于游离态的commit点?等等,这些都和一个叫做detached head的状态有关,我们来看看它的真面目。 通常情况下,HEAD指向一个分支;同时,每一个分支对应一个特定的commit(确切的说,一个分支上可以有多个commit,但是只有一个顶层commit,而且commit之间是简单的线性关系)。我们来看下面这个包含三个commit的例子,其中目前在master分支上。...

山云的专栏 1765

华为OD机试双机位A卷 - VLAN资源池 (C++ & Python & JAVA & JS & GO)

华为OD机试2025双机位A卷 VLAN资源池,提供Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解

qq_45776114的博客 879

Detached HEAD 状态详解

Detached HEAD(分离头指针)是Git的一种特殊状态,指HEAD直接指向某个commit,而不是指向某个分支。Detached HEAD 不是错误这是Git的正常状态用于查看历史版本或tag只是警告你处于特殊状态主要风险是提交丢失在detached HEAD状态commit后切换分支commit会变成"孤儿"30天后被Git垃圾回收删除解决方法很简单只看代码:切回分支即可要修改:立即创建分支已提交:在切换前创建分支。

u011265143的专栏 772

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

HEAD detached at head的处理

今天使用git的时候在终端发现这样一条信息 HEAD detached at head 分析 心里一惊,艾玛这是什么状态? 其实我们知道,git checkout本质上是修改HEAD里面的内容来让它指向不同分支的,而HEAD文件指向的分支就是我们当前的分支,但是有时候HEAD不会指向任何分支,严谨的说是HEAD指向了一个没有分支名字的修订版本,此时恭喜你,已经处于游离状态了(det

wolfking0608的博客 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

HEAD detached at ---

git checkout 到 某个分支,切换后发现并没有切换到该分支,而是切到了该分支的最新节点,无论如何都回不到分支头,记录这个问题。 命令: git checkout origin/分支名 结果: HEAD is now at 3691a4a5f 节点信息 (HEAD detached at origin/分支名) 解析: 1 detached HEAD state指的是什么 正常情况...

本然233的博客 4万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

HEAD detached from XXXX解决方法 HEAD detached at origin/master 问题的解决

如果是因为在这个分支下操作,出现了了问题的,请尝试一下办法 remotes/origin/HEAD -> origin/master 在一次提交git的途中,出现了一下问题 1.git push origin master后出现 Everything up-to-date 当时以为问题自己点错了,又重新提交了一次,在 git commit之后出现HEAD detached from 4d1722c错误 立即用git status查看,也是这样的内容,当时网上了教程很不清晰,自己还git check

欢迎访问我的主页:https://www.bookbook.cc 1万+

Git HEAD及detached head

Git HEAD及detached head

企鹅菜鸟的成长过程 2040

Git——detached HEAD

在学习git的过程中,有些blog提到这种detached HEAD情况,处于好奇,去搜索了相关的文章查看这种情况的具体表现,以及解决方案,在这里作个总结。detached head,即游离的HEAD,HEAD指向了未知的分支,即不在所有已知的分支范围内。detached HEAD 具体示意图是这样:(网络图片) 上网看了些资料,道友们是遇到这样的问题然后解决了,但是出于好奇心来了解的我并没有

sinat_26415011的博客 8615

git checkout之一 HEAD基本和detached 状态

1.HEAD基础git checkout 实际上是修改HEAD文件的内容,让其指向不同的branch。HEAD文件指向的branch就是当前branch.一般来讲,HEAD的内容是指向staging(暂存区)的master文件的。ref: refs/heads/master当然也可指向其他索引文件,不管怎么样,这个索引文件的内容又由git reset控制。通过git branch命令看到的结果和H

Dean Chen的专栏 11万+

git detached HEAD 状态最优雅的解救

git ‘detached HEAD’ 状态的解救 detached HEAD 状态是指 HEAD 指针不指在任何分支的索引(比如 master、dev)。 进入 detached HEAD 状态后 git 会创建一个临时分支。 如果想退回直接 git checkout 想要的分支。 否则操作后,要 git add、git commit 然后 git checkout -b 新的分支,不然临时分...

u011714033的博客 5538

detached HEAD是什么

在 Git 里,HEAD是一个指针,始终指向你当前所在分支的最新提交(commit)。比如你在main分支,HEAD就指向main分支的最新 commit。就是HEAD指针直接指向某个提交(commit),而不是分支名的状态。换句话说,此时你“脱离了分支”,只是在历史中的某个提交点上操作,而不是在某个分支的末尾。detached HEAD(游离 HEAD)就是指Git当前工作状态不在任何分支上,而是指向某一个具体的提交。此时新提交不会自动归入分支,需注意保存。

m0_57236802的博客 784

【git】checkout时遇到的detached HEAD问题

【git】checkout时遇到的detached HEAD问题

Can__er的博客 4062

Git之detached HEAD

Git很强大,很灵活,这是毋庸置疑的。但也正因为它的强大造成了它的复杂,因此会有很多奇奇怪怪的问题出现。

非典型程序媛 4万+

git 的 Detached HEAD

在 Git 版本管理中,是指你当前的工作状态不再指向任何分支,而是指向一个特定的提交(commit)。通常情况下,HEAD是指向你当前工作分支的指针,例如main或。当你切换到一个特定的提交或标签(而不是分支)时,HEAD会指向该提交,而不再是分支的最新提交。这种状态下,Git 会显示类似于的提示,表示你当前处于一个“分离头指针”(detached HEAD)状态。在这种状态下做的修改和提交不会直接影响任何分支,它们仅会存在于你当前的提交历史中,直到你明确地切换到一个分支。

bigcarp的专栏 1016
上一篇: 《自己动手写操作系统》第三章a/pmtest1.asm
下一篇: git中各个commit节点的查询 回溯 与 合并:git rebase与git reset
谁不小心的
博客等级 码龄15年 462粉丝 246原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值