【问题标题】:git: How do I get the hash of the latest commit in the current branch when in detached HEAD state?git:当处于分离 HEAD 状态时,如何获取当前分支中最新提交的哈希?
【发布时间】:2014-06-04 00:14:59
【问题描述】:

如何获取最新提交的哈希...

  1. 当 HEAD 处于分离状态时
  2. 没有明确指定分支

git rev-parse HEADgit log -n 1 --format="%H" 都遵循分离的 HEAD(显然)。

git rev-parse master 让我在分支中输入。

我猜测分离的 HEAD 状态没有分支的概念,但你明白我的意图吗?我一直在掌握,所以我不想仅仅因为我正在查看以前的提交而明确指定它。

this question 相同,但用于分离的 HEAD 状态。

谢谢!

【问题讨论】:

  • 如果你 git pull origin 分支名会发生什么
  • @m79lkm 需要输入分支名称,我试图避免这种情况
  • 确实;一个分离的头根本不在任何分支上,所以没有办法告诉你。您能否再解释一下您的工作流程,以说明您是如何进入这种情况的以及您希望看到什么?

标签: git


【解决方案1】:

一个问题是您正在进行的提交(与头部分离)实际上可能位于多个分支上。如果您只想显示 一个 分支,则必须想办法在它们之间进行选择。但是,如果您很高兴看到包含当前提交的所有分支(带有哈希),您可以说

git branch -v --contains HEAD

这是一些示例输出:

* (detached from 0bc85ab) 0bc85ab Git 1.9.2
  master                  cc29195 Git 2.0-rc0

您可以使用 grep 和/或 awk 对其进行修整。

【讨论】:

  • 谢谢,这说明了为什么我不能假设分离的 HEAD 位于特定分支中。我发现以下代码的工作方式类似,并按照您的建议修剪输出:git show-ref | grep $(git show-ref -s -- HEAD) | sed 's|.*/\(.*\)|\1|' | grep -v HEAD | sort | uniq
【解决方案2】:

To refer to "the n‍th previous branch I checked out", use @{-n}.

git rev-parse @{-1}

这确实是一个分支参考:

git checkout @{-1}

会让你留在那个分支上。

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 2022-01-19
    • 2018-04-28
    • 2013-03-18
    • 2020-04-29
    • 2020-03-12
    • 2014-03-17
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多