git: 当处于分离 HEAD 状态时,如何获取当前分支中最新提交的哈希值?

9 浏览
0 Comments

git: 当处于分离 HEAD 状态时,如何获取当前分支中最新提交的哈希值?

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

  1. 在分离 HEAD 状态下
  2. 不显式指定分支

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

git rev-parse master 要求我输入分支。

我猜分离 HEAD 状态没有分支的概念,但你明白我的意图吗?我一直在 master 分支上,所以我不想因为查看之前的提交而必须显式指定它。

这个问题类似,但是针对分离 HEAD 状态。

谢谢!

0
0 Comments

当在分离头状态下,我们无法直接使用`git log`等命令来获取当前分支最新提交的哈希值。这是因为在分离头状态下,我们已经不再处于任何分支上了,所以无法直接通过分支名来获取哈希值。

然而,我们可以通过`git rev-parse`命令来获取最新提交的哈希值。具体的命令是`git rev-parse @{-1}`。这里的`@{-1}`表示当前分支的上一个分支。通过这个命令,我们可以得到最新提交的哈希值。

另外,如果我们希望在分离头状态下切换到最新的提交所在的分支,我们可以使用`git checkout @{-1}`命令。这样就可以回到最新提交所在的分支上。

总结起来,当处于分离头状态下,我们可以通过`git rev-parse @{-1}`命令来获取最新提交的哈希值,通过`git checkout @{-1}`命令来切换到最新提交所在的分支。

0
0 Comments

问题的出现原因是在分离头状态下,所在的提交可能存在于多个分支中。如果只想要显示一个分支,就需要找到一种选择的方法。但是如果希望看到包含当前提交的所有分支(带有哈希值),可以使用git branch -v --contains HEAD命令。下面是一个示例输出:

* (detached from 0bc85ab) 0bc85ab Git 1.9.2

master cc29195 Git 2.0-rc0

可以使用grep和/或awk来整理输出结果。感谢提供的代码,它的工作原理类似,并且可以根据建议整理输出结果:git show-ref | grep $(git show-ref -s -- HEAD) | sed 's|.*/\(.*\)|\1|' | grep -v HEAD | sort | uniq

0