专栏首页拭心的安卓进阶之路Git HEAD detached from XXX (git HEAD 游离) 解决办法

Git HEAD detached from XXX (git HEAD 游离) 解决办法

本文 Git 图片主要来自:图解 Git,非常感谢!

什么是 HEAD

Git 中的 HEAD 可以理解为一个指针,我们可以在命令行中输入 cat .git/HEAD 查看当前 HEAD 指向哪儿,一般它指向当前工作目录所在分支的最新提交。

当使用 git checkout < branch_name> 切换分支时,HEAD 会移动到指定分支。

但是如果使用的是 git checkout < commit id>,即切换到指定的某一次提交,HEAD 就会处于 detached 状态(游离状态)。

HEAD 游离状态的利与弊

HEAD 处于游离状态时,我们可以很方便地在历史版本之间互相切换,比如需要回到某次提交,直接 checkout 对应的 commit id 或者 tag 名即可。

它的弊端就是:在这个基础上的提交会新开一个匿名分支!

也就是说我们的提交是无法可见保存的,一旦切到别的分支,游离状态以后的提交就不可追溯了。

解决办法就是新建一个分支保存游离状态后的提交:

具体解决操作

  1. git branch -v 查看当前领先多少
    • 4449a91 指向的是 dev1 的最后一次提交
  2. 新建一个 temp 分支,把当前提交的代码放到整个分支
  3. checkout 出要回到的那个分支,这里是 dev1
  4. 然后 merge 刚才创建的临时分支,把那些代码拿回来
  5. git status 查看下合并结果,有冲突就解决
  6. 合并 OK 后就提交到远端
  7. 删除刚才创建的临时分支
  8. 查看 Log,当前 HEAD 指向本地 dev1 ,和远端 dev1 一致,OK 了!

Thanks

https://marklodato.github.io/visual-git-guide/index-zh-cn.html#detached https://git-scm.com/docs/git-checkout#_detached_head

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java 集合深入理解(6):AbstractList

    今天心情比天蓝,来学学 AbstractList 吧! ? 什么是 AbstractList ? AbstractList 继承自 AbstractCollec...

    张拭心 shixinzhang
  • git pull --rebase 做了什么? 以及 Cannot rebase: You have unstaged changes 解决办法

    最近刚学 git rebase,觉得很牛逼的样子, 结果今天就被打脸了。 git pull --rebase 报错: Cannot rebase: You ...

    张拭心 shixinzhang
  • Android 进阶7:进程通信之 AIDL 的使用

    记得 2015 年实习面试,笔试题里就有这道题:请介绍下 AIDL。 当时的我是懵逼的,只好老老实实空着。没想到后来面试时面试官大哥嘿嘿一笑说他也没用过这玩意,...

    张拭心 shixinzhang
  • Git Pro深入浅出(一)

    什么是“版本控制”?版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制系统(VCS)应用而生。有了它你就可以将某个文...

    奋飛
  • 如何使用github给大佬递茶

    最近也是闲到没事干(误),开始给开源项目打小黑工贡献代码,当个dalao手底下的端茶党。但是看来端茶党也不是那么容易做的或许只是傻翠他智商太低跟不上,在打小黑工...

    idealclover
  • Git 学习记录

    版本控制系统有两类:集中式与分布式。 分布式版本系统的代表是 Git,而集中式版本系统的代表是 SVN(Subversion)。

    caoqi95
  • git学习总结02 — 版本控制

    版本的前进后退本质是 HEAD 指针的移动,有三种移动指针进行版本控制的方式:索引、^、~。

    CS逍遥剑仙
  • 如何使用Ubuntu 14.04上的Git Hooks将Hugo站点部署到生产环境

    Hugo是一个静态站点生成器,允许您通过使用简单的标记语言轻松创建和发布Web内容。Hugo可以根据提供的要求解析您的内容并应用主题,以生成可以轻松托管在任何W...

    朝朝
  • git常用操作都在这里了(二)

    阿章-python小学生
  • Git 30分钟简明教程

    1991年,Linus创建了开源的Linux,世界各地的志愿者为Linux编写代码,但是绝大多数的内核维护工作,都花费在提交补丁和保存档案的繁琐事务上。这期间所...

    Yano_nankai

扫码关注云+社区

领取腾讯云代金券