【问题标题】:Is the detached HEAD my current project files or not?分离的 HEAD 是否是我当前的项目文件?
【发布时间】:2016-10-15 21:58:25
【问题描述】:

我正在按照内核项目的说明进行操作,并被告知:

从位于 URL 的存储库中导出要使用的内核:

git://git.yoctoproject.org/linux-yocto-3.14

您需要切换到“v3.14.26”标签,

所以我做到了:

git clone git://git.yoctoproject.org/linux-yocto-3.14

项目下载后,我输入:

git checkout 'v3.14.26'

并收到一条消息,告诉我我现在如何处于分离的 HEAD 状态。它还输出以下内容:

HEAD is now at 356a3e1... Linux 3.14.26

但项目中没有下载或更改任何内容似乎很奇怪;我跑了show-branch 并被告知[master] Merge tag 'v3.14.24'

那么该项目实际上是否为 3.14.26 版本?我真的不明白发生了什么,但我认为我在阅读后了解 detached HEAD 发生了什么。我不会对解决方案进行任何更改,我只是按照指南使用特定的 3.14.26 版本的内核。

【问题讨论】:

标签: linux git terminal


【解决方案1】:

为了简单起见,只有当 HEAD 指向一个分支(你可以提交的东西)时,它才会被附加。当您将 HEAD 指向标签时,您的工作副本将基于该提交,但由于您无法提交标签,它会告诉您已分离。

为了确保你在你认为的位置,运行:

git log --decorate=short --oneline --branches=*

如果它把 HEAD 放在与 v3.14.26 相同的提交上,那你很好。示例:

λ git log --decorate=short --oneline --branches=*

bdeddd5 (origin/master, origin/HEAD, master) XXX
5250588 YYY
647f007 ZZZ
d5cc025 (HEAD, tag: v3.14.26) WWW
55736b0 PPP

【讨论】:

  • 谢谢。那我得到我想要的 v3.14.26 版本了吗?还是我输入了错误的命令?
  • 你做对了 :) 你的代码实际上是在 v3.14.26 上。编辑更多信息
  • 我执行了你写的那一行,列表顶部是(origin/master, origin/HEAD, master) Merge tag 'v.3.14.24' :/ 然后下面是一大堆只返回版本(.23、.22 等)的提交.)
  • 如果我重新执行git chechout 'v3.14.26' it again tells me 'HEAD is now at 356a3el... Linux 3.14.26 但当我使用你告诉我的那行时,我看到(在所有其他提交中)`Merge tag 'v3.14.24'。我没有看到关于 v3.14.26 的头部的任何信息
  • 它可能是,但它落后于最新提交...尝试在包含 HEAD 或此标记的行上进行 grep 以确保
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-27
  • 2014-10-13
  • 1970-01-01
  • 2011-03-18
  • 2010-12-21
  • 2022-11-01
相关资源
最近更新 更多