Git HEAD指针
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指针相关推荐
- Git 头指针分离与 FETCH_HEAD
Git 头指针分离与 FETCH_HEAD 出现这个问题一般的的原因就是你checkout 别人提交的代码引起的, 先说先处理方法, 就是创建一个新的分支并切换分支就好了, 创建一个新的分支:git ...
- Git使用教程-命令总结大全
/在 cmd 上操作/ git help // 帮助信息 常用git命令 和解释 git help -a // 命令目录 git help -g //手册 g ...
- Git Rebase教程: 用Git Rebase让时光倒流
想象一下你正在开发一个激进的新功能.这将是很灿烂的但它需要一段时间.您这几天也许是几个星期一直在做这个. 你的功能分支已经超前master有6个提交了.你是一个优秀的开发人员并做了有意义的语义提交.但 ...
- 如何存储 Git 大文件?
作者:terryshchen,腾讯 IEG 应用开发工程师 本文主要讲解在 Git 仓库中如何管理大的二进制文件,详细介绍了什么是 Git LFS,Git LFS 是如何工作的,以及如何使用 Git ...
- Git的GUI工具sourcetree的使用
一.Git的学习 这部分学习廖雪峰的git教程,参加以下链接: https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67 ...
- Eclipse中的Git使用之Branch创建,Merge
目录 ■操作步骤 1.创建 Branch 2.merge代码 (Barnch_A ← Branch_B) ■默认注释 ■其他 ■竞合发生时(会显示竞合文件一览) ■关于竞合的代码 ■[Stage 区域 ...
- 学习如何使用 Git 来压扁、变基和精选
学习如何使用 Git 来压扁.变基和精选. 当我与别人谈到 Git 时,几乎每个人都对 git rebase 命令 有强烈的印象,这个命令让许多人遇到了问题,而不得不更改目录.删除仓库.然后再重新克隆 ...
- 浅谈Git原理和常用命令(学习笔记)
因为多人和做的项目经常用Git但是对于git我总是不太理解,今天熬夜学习了一下 Git我们clone下来的项目的根目录下有一个 .git 的文件,这个不是我们的工作区,它叫做版本库,它来记录我们工作区 ...
- git大文件记录清除解决方案
参考: https://blog.csdn.net/Y0W1as5eg37urFdS/article/details/123539994 https://www.manongdao.com/artic ...
- GitHub Actions 入门教程
https://jiangren.com.au/blog/github-actions 一.GitHub Actions 是什么? 大家知道,持续集成由很多操作组成,比如抓取代码.运行测试.登录远程服 ...
最新文章
- javaEE之------Spring-----》 AspectJ注解
- Lunar New Year and Number Division
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
- redchat怎么编写shell脚本_如何写shell脚本?尝试自己编写一个简单脚本
- unity创建和销毁对象_如何创建和销毁对象
- 为什么git的“ pull request”不称为“ push request”?
- python编程新手常犯的错误_初学者开发人员都会犯的7个Python错误
- 微信开发之调起摄像头、本地展示图片、上传下载图片
- Java实现UDP组播(multicast)和单播(unicast)简单例子——局域网内
- Win10环境下安装pytho、pip与Robot Framework
- 提示the windows installer service could not be accessed
- 数据库原理与设计P163习题9答案
- Pytorch版本YOLOv3模型转Darknet weights模型然后转caffemodel再转wk模型在nnie上面推理
- Java之加密工具类java.security.MessageDigest或org.apache.commons.codec.digest.DigestUtils
- 华为 USG6000防火墙配置镜像模式双机热备
- DeepMind:星际争霸2:强化学习新挑战(翻译)
- 优质产品+专业服务 瑞星护航河北省民政厅
- IE8,9,10下table th不显示边框解决方法
- 亲测修复支付网关早起打卡源码/带教程/支付已接/优化扫码流程
- 腾讯-- TDW数据仓库数据安全
热门文章
- IIS-网站报500.19错误代码0x8007000d问题解决
- Windows更新错误代码0x8007000e
- MySQL导入数据遇到Error Number: 1467 Failed to read auto-increment value from storage engine错误
- android 锁屏代码分析,Android锁屏状态下的安全分析
- Win7操作系统:请求的操作需要提升
- could't excute 请求的操作需要提升 win32 error 740
- 大觉寺到鹫峰线路_大觉寺—鹫峰—望京塔—羊台山—凤凰岭—七王坟徒步游记...
- 自己动手打造 mini 型 QQ (二):从局域网到互联网的 miniQQ
- Automatic classification of defective photovoltaic module cells in electroluminescence images-论文阅读笔记
- 班级网站-前端网页技术精美完整源码HTML+CSS+JS