git: 当处于分离 HEAD 状态时,如何获取当前分支中最新提交的哈希值?
git: 当处于分离 HEAD 状态时,如何获取当前分支中最新提交的哈希值?
如何获取最新提交的哈希...
- 在分离 HEAD 状态下
- 不显式指定分支
git rev-parse HEAD
和 git log -n 1 --format="%H"
都会遵循分离 HEAD(显然)。
git rev-parse master
要求我输入分支。
我猜分离 HEAD 状态没有分支的概念,但你明白我的意图吗?我一直在 master 分支上,所以我不想因为查看之前的提交而必须显式指定它。
与这个问题类似,但是针对分离 HEAD 状态。
谢谢!
当在分离头状态下,我们无法直接使用`git log`等命令来获取当前分支最新提交的哈希值。这是因为在分离头状态下,我们已经不再处于任何分支上了,所以无法直接通过分支名来获取哈希值。
然而,我们可以通过`git rev-parse`命令来获取最新提交的哈希值。具体的命令是`git rev-parse @{-1}`。这里的`@{-1}`表示当前分支的上一个分支。通过这个命令,我们可以得到最新提交的哈希值。
另外,如果我们希望在分离头状态下切换到最新的提交所在的分支,我们可以使用`git checkout @{-1}`命令。这样就可以回到最新提交所在的分支上。
总结起来,当处于分离头状态下,我们可以通过`git rev-parse @{-1}`命令来获取最新提交的哈希值,通过`git checkout @{-1}`命令来切换到最新提交所在的分支。
问题的出现原因是在分离头状态下,所在的提交可能存在于多个分支中。如果只想要显示一个分支,就需要找到一种选择的方法。但是如果希望看到包含当前提交的所有分支(带有哈希值),可以使用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
。