HEAD 指针,用于记录当前工作的位置,可以指向Commit,也可以指向branch。

可以使用 【git checkout 哈希码】 来移动HEAD指针。

Git 分离头指针状态

通常,我们工作在某一个分支上,比如 master 分支。当指向branch时commit提交后,master 指针和 HEAD 指针一起前进的,每做一次提交,这两个指针就会一起向前挪一步。

但是在某种情况下(例如 checkout 了某个commit),master 指针 和 HEAD 指针这种「绑定」的状态就被打破了,变成了分离头指针状态。下图就是处于分离头指针状态的情况:

在“分离头指针”的状态的操作(如add)是无效的,没有任何意义。

如何解决Git 分离头指针导致的commit丢失

解决办法如下,首先通过下面的命令找到丢失的commit id

再执行

git merge 3f263a6

实例演示

HEAD指针默认指向当前的分支,用星号表示Head所在位置,如master *

移动HEAD指针,git checkout C1。 这个时候HEAD指针指向的是快照,这个时候指针的状态称之为头指针分离状态,detached。

HEAD指针在分离状态下提交,git commit, 分支指针不会动。

再次移动HEAD指针,让它指向master分支指针 git checkout master

在master分支指针上提交git commit
这个是正常的提交,和分离状态下的提交是不一样的。HEAD指针和分支指针同时移动。

将HEAD指针移动到detached状态的快照git checkout C2

添加新的分支git branch new

移动已存在的分支到detached状态的分支 git branch -f master C2 这个时候master分支以前的快照C3就变成了detached状态了

PS:分离头指针的妙用,来自 https://blog.csdn.net/qq_32452623/article/details/79415990

“排查问题的时候,checkout 到怀疑的 commit 点上去做些测试,detached HEAD会保护你的现有分支不受影响,测试完了不想保存直接 checkout 到其他地方,可以放弃修改。想保存修改,可以创建一个 git checkout -b <new-branch-name> 新分支保存。”

Git HEAD指针相关推荐

  1. Git 头指针分离与 FETCH_HEAD

    Git 头指针分离与 FETCH_HEAD 出现这个问题一般的的原因就是你checkout 别人提交的代码引起的, 先说先处理方法, 就是创建一个新的分支并切换分支就好了, 创建一个新的分支:git  ...

  2. Git使用教程-命令总结大全

    /在 cmd 上操作/ git help          // 帮助信息  常用git命令  和解释 git help -a      // 命令目录 git help -g      //手册 g ...

  3. Git Rebase教程: 用Git Rebase让时光倒流

    想象一下你正在开发一个激进的新功能.这将是很灿烂的但它需要一段时间.您这几天也许是几个星期一直在做这个. 你的功能分支已经超前master有6个提交了.你是一个优秀的开发人员并做了有意义的语义提交.但 ...

  4. 如何存储 Git 大文件?

    作者:terryshchen,腾讯 IEG 应用开发工程师 本文主要讲解在 Git 仓库中如何管理大的二进制文件,详细介绍了什么是 Git LFS,Git LFS 是如何工作的,以及如何使用 Git ...

  5. Git的GUI工具sourcetree的使用

    一.Git的学习 这部分学习廖雪峰的git教程,参加以下链接: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67 ...

  6. Eclipse中的Git使用之Branch创建,Merge

    目录 ■操作步骤 1.创建 Branch 2.merge代码 (Barnch_A ← Branch_B) ■默认注释 ■其他 ■竞合发生时(会显示竞合文件一览) ■关于竞合的代码 ■[Stage 区域 ...

  7. 学习如何使用 Git 来压扁、变基和精选

    学习如何使用 Git 来压扁.变基和精选. 当我与别人谈到 Git 时,几乎每个人都对 git rebase 命令 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录.删除仓库.然后再重新克隆 ...

  8. 浅谈Git原理和常用命令(学习笔记)

    因为多人和做的项目经常用Git但是对于git我总是不太理解,今天熬夜学习了一下 Git我们clone下来的项目的根目录下有一个 .git 的文件,这个不是我们的工作区,它叫做版本库,它来记录我们工作区 ...

  9. git大文件记录清除解决方案

    参考: https://blog.csdn.net/Y0W1as5eg37urFdS/article/details/123539994 https://www.manongdao.com/artic ...

  10. GitHub Actions 入门教程

    https://jiangren.com.au/blog/github-actions 一.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试.登录远程服 ...

最新文章

  1. javaEE之------Spring-----》 AspectJ注解
  2. Lunar New Year and Number Division
  3. MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
  4. redchat怎么编写shell脚本_如何写shell脚本?尝试自己编写一个简单脚本
  5. unity创建和销毁对象_如何创建和销毁对象
  6. 为什么git的“ pull request”不称为“ push request”?
  7. python编程新手常犯的错误_初学者开发人员都会犯的7个Python错误
  8. 微信开发之调起摄像头、本地展示图片、上传下载图片
  9. Java实现UDP组播(multicast)和单播(unicast)简单例子——局域网内
  10. Win10环境下安装pytho、pip与Robot Framework
  11. 提示the windows installer service could not be accessed
  12. 数据库原理与设计P163习题9答案
  13. Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理
  14. Java之加密工具类java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils
  15. 华为 USG6000防火墙配置镜像模式双机热备
  16. DeepMind:星际争霸2:强化学习新挑战(翻译)
  17. 优质产品+专业服务 瑞星护航河北省民政厅
  18. IE8,9,10下table th不显示边框解决方法
  19. 亲测修复支付网关早起打卡源码/带教程/支付已接/优化扫码流程
  20. 腾讯-- TDW数据仓库数据安全

热门文章

  1. IIS-网站报500.19错误代码0x8007000d问题解决
  2. Windows更新错误代码0x8007000e
  3. MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误
  4. android 锁屏代码分析,Android锁屏状态下的安全分析
  5. Win7操作系统:请求的操作需要提升
  6. could't excute 请求的操作需要提升 win32 error 740
  7. 大觉寺到鹫峰线路_大觉寺—鹫峰—望京塔—羊台山—凤凰岭—七王坟徒步游记...
  8. 自己动手打造 mini 型 QQ (二):从局域网到互联网的 miniQQ
  9. Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
  10. 班级网站-前端网页技术精美完整源码HTML+CSS+JS