【问题标题】:GIT checkout tag issues - detached HEAD stateGIT 结帐标签问题 - 分离的 HEAD 状态
【发布时间】:2018-02-23 18:20:02
【问题描述】:

这个项目的目的是调用不在标准 UNIX 路径中的代码。

我的教授提供了从 GIT 存储库克隆 gawk 的步骤,然后以 autoconf 格式构建和安装。

我的问题是 - 从 git://git.savannah.gnu.org/gawk.git 克隆后,我需要更改要安装的版本。当我使用教授提供给我们的 git checkout tags/gawk-3.1.8 命令时,我收到以下输出。 当我使用 make 和 make install 命令时,我得到的是最新版本的 gawk 而不是 3.1.8。

Note: checking out 'tags/gawk-3.1.8'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by perfoming another checkout.
If you want to create a new branch to retain commits you create, you may do
so (now or later) by using -b with the checkout command again. Example:
git checkout -b new_branch_name
HEAD is now at 00ef042... Move to 3.1.8

我搜索了几个独立的 HEAD 状态论坛,但未能找到解决方案。任何帮助表示赞赏。

【问题讨论】:

  • 有什么问题?您要修改 gawk 并进行自己的提交吗?如果是这样,只需在签出标签后创建一个分支。如果您正在安装,那么只需运行构建脚本即可完成。
  • 为什么你认为除了 gawk 3.1.8 之外你会“结束”任何东西?我认为您没有运行您构建的版本。

标签: git unix git-detached-head


【解决方案1】:

这不是错误,一切都按预期工作。注意输出是Note: 而不是Error: 或其他内容。

该注释只是告诉您处于 "detached HEAD" 状态,如果您只是使用 repo 并且不打算推送任何提交,这很好。

【讨论】:

  • 这确实很奇怪,我假设您尝试过git status 以确保您没有意外合并某些内容并且肯定在tags/gawk-3.1.8 上?
  • 是的,你有点离谱 :) 如果git status 告诉你你在 gawk-3.1.8 上,那么 repo 中的代码就是这样标记的代码绝对是您正在使用的代码。你怎么确定你不是在构建 3.1.8?您是否尝试了make clean 并再次构建/安装?
  • 当我使用 ./bin/gawk --version 与 /bin/gawk --version 检查版本时,它给了我 3.1.8。你介意向我解释一下为什么会这样吗?
  • 啊,这很可能是因为您现在已经安装了 2 个版本的 gawk。位于 /bin/gawk 的版本是 4.0.2 版(这个版本可能已经通过 apt 安装),而您在本地安装的版本(无论您将存储库克隆到哪里)是版本 3.1.8。如果您输入which gawk,它将告诉您哪个 gawk 副本在您的 PATH 中,因此默认情况下将使用哪个副本。
  • 取决于您打算将旧 gawk 用于什么,如果它只是用于一些临时学校项目或其他东西,我会将它留在原处并直接使用完整路径。如果您想为整个系统降级 gawk 并保持这种状态,那么您可以运行 sudo apt remove gawk 并安装源版本。尝试在谷歌上搜索“从源代码安装软件”等内容。
【解决方案2】:

您分离的 HEAD 状态不一定是您需要解决的“问题”。我知道打印出来的警告可能会引起您的警觉,但这只是 Git 试图防止您犯错。

分离的 HEAD 只是意味着您的 HEAD 引用没有指向除提交之外的任何其他引用。

换句话说:你不在一个分支上。这不是需要解决的问题,您应该能够按照您所做的那样签出该版本并根据教授提供的说明构建项目。

在此处阅读更多信息:https://git-scm.com/docs/git-checkout#_detached_head

【讨论】:

    猜你喜欢
    • 2011-07-31
    • 1970-01-01
    • 2016-12-22
    • 2014-11-14
    • 1970-01-01
    • 2014-03-17
    • 2018-04-28
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多