分离头指针

数字追云人
• 阅读 5557

在使用 git 时,会冷不丁弹出一些术语,在之前可能没有听过,突然之间心情就紧张起来了。

其中就有一个分离头指针(detacged HEAD)

分离头指针

有时你在切换分支时,输了一个commit信息

分离头指针

git 给你的提示,你现在正在基于这个commit做操作。

你现在正处在分离头指针状态,你可以做一些变更然后产生commit,你也可以把生成的commit丢弃掉。也就是说你在分离头指针状态下,可以继续开发,但不影响其他开发,它的本意是:现在正在工作在没有分支的状态下。

下面具体演示下分离头指针的操作。

现在修改了 style/style.css 文件,并且commit

这时候用git log查看历史信息时,发现之前HEAD这变都会指向一个分支,然而这边却没有。这个就叫分离头指针状态

分离头指针

假设这是你接到了一个任务,需要切换分支

分离头指针

它会有一个警告说:现在有一个commit没有加到分支上去。也就是说这个commit一会会被垃圾清理掉。我们可以gitk --all来查看有没有add maincommit信息。

分离头指针

从上图可以看出,这个commit没有和某个分支绑着,也没有和某个tag绑着,在 git 眼里,这种commit日后都是要被清除的。

假如这个时候我醒悟过来了,觉得这个commit很重要,按照它的指示信息建一个分支,将它保留下来。

分离头指针

此时你可以看到add maincommit被保留了下来。

如果你想要添加到某个分支上,再用merge

比如你想添加到master分支上,将HEAD切换到master分支,然后用git merge css,就将这次commit添加到master上了。

进一步理解 HEAD 和 branch

git ckeckout -b fix_bug temp        //新分支
git diff commit信息 commit信息      //比较两个 commit 之间的差异
git diff HEAD HEAD^                 //等价于下面这条命令
git diff HEAD HEAD~1                //等价于上面这条命令
点赞
收藏
评论区
推荐文章
似梦清欢 似梦清欢
3年前
查找算法
顺序查找顺序查找又称为线性查找,对线性表和链表都适用。线性表可以通过数组下标递增来顺序扫描每个元素,链表可以通过next指针依次扫描每一个元素。:::tip指针实现顺序表时,顺序表中是指针时,在定义顺序表的结构体后,需要对顺序表初始化,初始化时为指针申请堆
东方客主 东方客主
4年前
Http请求头和请求响应头大全
HTTP响应头和请求头信息对照表HTTP请求头提供了关于请求,响应或者其他的发送实体的信息。HTTP的头信息包括通用头、请求头、响应头和实体头四个部分。每个头域由一个域名,冒号(:)和域值三部分组成。通用头标:即可用于请求,也可用于响应,是作为一个整体而不是特定资源与事务相关联。请求头标:允许客户端传递
Wesley13 Wesley13
4年前
C++基类的析构函数定义为虚函数的原因
1:每个析构函数只会清理自己的成员(成员函数前没有virtual)。2:可能是基类的指针指向派生类的对象,当析构一个指向派生类的成员的基类指针,这时程序不知道这么办,可能会造成内存的泄露,因此此时基类的析构函数要定义为虚函数;基类指针可以指向派生类的对象(多态),如果删除该指针delete\\p,就会调用该指针指向的派生类的析构函数,而派生类
Wesley13 Wesley13
4年前
D语言之数组
参考自d程序设计语言我的博客http://my.oschina.net/u/218155/blog?fromerrSwOkb7Sw(http://my.oschina.net/u/218155/blog?fromerrSwOkb7Sw) fllowme 在D语言中的数组是胖指针。头指针长度或者头指针尾指针 在D语言中动态数组和
Stella981 Stella981
4年前
Git 实战教程
1.Git配置使用Git的第一件事就是设置你的名字和email,这些就是你在提交commit时的签名,每次提交记录里都会包含这些信息。使用gitconfig命令进行配置:​$gitconfigglobaluser.name"ilimhumar"$gitconfigglobal
Wesley13 Wesley13
4年前
C和C++函数时的JNI使用区别
Java调用C和C函数时的JNI使用区别:注意:jni.h头文件中对于\\\.c & \\\.cpp采用不同的定义在C的定义中,env是一个两级指针,而在C的定义中,env是个一级指针C形式需要对env指针进行双重deferencing,而且须将env作为第一个参数传给jni函数jclass(JNICALL\
Stella981 Stella981
4年前
OpenCV常用库函数[典]
_一、core_ 模块1、Mat基本图像容器     Mat 是一个类,由两个数据部分组成:矩阵头(包含矩阵尺寸,存储方法,存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同矩阵可以是不同的维数)的指针。        创建Mat对象方法:1.1Mat()构造函数:
Stella981 Stella981
4年前
Javascript中的基本数据类型
Undefined在var或者let中声明了变量但没有赋值时,这个变量的值就是undefined.使用typeof关键字检测未声明变量的类型为undefined.Nullnull表示一个空对象指针,所以用typeof检测null时,会返回objectundefine派生自null,
Wesley13 Wesley13
4年前
Java并发新构件之DelayQueue
    DelayQueue主要用于放置实现了Delay接口的对象,其中的对象只能在其时刻到期时才能从队列中取走。这种队列是有序的,即队头的延迟到期时间最短。如果没有任何延迟到期,那就不会有任何头元素,并且poll()将返回null(正因为这样,你不能将null放置到这种队列中)    下面是一个示例,其中的Delayed对象自身就是任务,而Delaye
Wesley13 Wesley13
4年前
C++学习(十八)(C语言部分)之 指针2
指针1、指针的概述指针是什么?指针是一个地址是一个常量int整型intaa是变量指针用来做什么?方便使用数组或者字符串像汇编语言一样处理内存地址2、指针变量什么是指针变量?是一个可以存储地址的一个“容器”经常会吧指针变量读作指针后面吧地址当做“指针”吧存储地址的变量叫做“指针变量”
小万哥 小万哥
2年前
Git 分支管理:优化版本控制与应急处理的关键策略
使用Git分支:轻松管理不同版本和应对紧急情况的最佳实践使用Git分支在Git中,分支是主仓库的新/独立版本。假设你有一个大型项目,需要对其进行设计更新。没有使用Git时:复制所有相关文件以避免影响实时版本开始进行设计工作,并发现代码依赖于其他文件中的代码