分离头指针

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

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

分离头指针

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

image

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

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

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

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

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

image

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

image

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

image

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

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

image

此时你可以看到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                //等价于上面这条命令
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • At the source of every error which is blamed on the compu...
    raawaa阅读 13,589评论 7 10
  • 分离头指针出现的场景 从git日志中随机找一个commit进行分离头指针 git logimage.pngimag...
    蝌蚪1573阅读 3,254评论 0 0
  • 分离头指针:detached HEAD意思就是正工作在一个没有分支的状态下,在没有对应任何分支的情况下,做了com...
    健倾心语阅读 1,096评论 0 0
  • 简介 Git是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。 Git 与常用的版本控制工具 ...
    闽越布衣阅读 2,771评论 0 18
  • 当我们创建分支时,可能会出现这样子的情况。 此时将会进入分离头 git 也会温馨提示你 detached HEAD...
    littleyu阅读 267评论 0 0