美文网首页
危险!分离头指针

危险!分离头指针

作者: raawaa | 来源:发表于2016-07-27 15:23 被阅读3441次

At the source of every error which is blamed on the computer you will find at least two human errors, including the error of blaming it on the computer.

我的博客是 Hexo 生成的静态网站,文章内容用 Git 作版本控制。前几天在一次提交之后,发现提交的内容不见了,到底发生了什么?

案件回放

当时我认为自己正处在 master 分支上,编辑提交后随手查看了一下 git log ,发现 master 分支指针仍指在前一次提交上,并没有前进。这是我第一次碰到这种情况,当我发现有些不对劲的时候,我无知地直接检出了 master 分支。于是刚刚提交的改动都消失不见了,从 log 里也找不到那次提交的痕迹。这也要怪 Magit! 没有给我任何警告,倒是命令行下的 git 给出一行提示:我处于分离头指针状态。

分离头指针(detached HEAD)

detached HEAD

通常,我们工作在某一个分支上,比如 master 分支。这个时候 master 指针和 HEAD 指针是一起前进的,每做一次提交,这两个指针就会一起向前挪一步。但是在某种情况下(例如 checkout 了某个具体的 commit),master 指针 和 HEAD 指针这种「绑定」的状态就被打破了,变成了分离头指针状态。我那天遇到的情况是,master 和 HEAD 指针看上去指在同一个 commit 上,但其实已经处在分离头指针状态。当我在此时又做了一次新的提交时,HEAD 指针跑到 master 指针前面去了。如果我直接检出 master 分支,HEAD 指针就会回退一格到 master 指针的位置,而最新的那次提交就变成了孤立的提交,没有任何分支能追踪到它,刚才的活白干了。

吃一堑长一智,下面是解决办法:

# 强制将 master 分支指向当前头指针的位置
$ git branch -f master HEAD
# 检出 master 分支
$ git checkout master

相关文章

  • 危险!分离头指针

    At the source of every error which is blamed on the compu...

  • 分离头指针

    当我们创建分支时,可能会出现这样子的情况。 此时将会进入分离头 git 也会温馨提示你 detached HEAD...

  • 分离头指针

    在使用 git 时,会冷不丁弹出一些术语,在之前可能没有听过,突然之间心情就紧张起来了。 其中就有一个分离头指针(...

  • git分离头指针

    分离头指针出现的场景 从git日志中随机找一个commit进行分离头指针 git logimage.pngimag...

  • Git 分离头指针 HEAD

    分离头指针 HEAD 操作 当前 Git 仓库的头指针不指向任何分支,处于游离状态或者说分离状态。 如果正的游离状...

  • 【学了就忘】Git操作 — 67.分离头指针状态

    1、什么是分离头指针状态 Git在使用的时候有一种状态,叫做分离头指针状态,也叫detached HEAD。 我们...

  • 6.Git分离头指针

    分离头指针指的是变更没有基于某一个分支,当我们进行分支切换时,很可能出现变更的丢失,这时我们需要创建一个新的分支,...

  • Git-12: 分离头指针 detached HEAD

    李文轩 2019-02-23声明:这是本人学习极客时间的Git三剑客的笔记,有侵权请联系我。 分离头指针的特性:没...

  • Python算法-双指针(Two Pointers)

    双指针分为「对撞指针」、「快慢指针」、「分离双指针」。 参考来源:https://algo.itcharge.cn...

  • 链表: swordToOffer

    1 链表 有效头结点 list 要点: (1) 插/删 可能改变 头指针 pHead -> 入参为 头指针的指针 ...

网友评论

      本文标题:危险!分离头指针

      本文链接:https://www.haomeiwen.com/subject/vamojttx.html