显示 HEAD 提交 ID 的 Git 命令是什么?

364

我应该使用哪个命令来打印出HEAD的提交ID?

这是我手动执行的内容:

$ cat .git/HEAD
ref: refs/heads/v3.3
$ cat .git/refs/heads/v3.3
6050732e725c68b83c35c873ff8808dff1c406e1

但我需要一个可靠的脚本,可以将某些命令的输出精确地导入到文本文件中,以便该文本文件仅包含HEAD的提交ID(没有多余内容,也不只是一个ref)。有人能帮忙吗?


我以前有一个类似的问题。这里有一个很好的答案:https://dev59.com/TaPia4cB1Zd3GeqPv0RU - smwikipedia
8个回答

644

使用以下命令:

git rev-parse HEAD

简短版本:

git rev-parse --short HEAD

50
对于任何想要获取哈希值的简短版本的人,可以使用命令 git rev-parse --short HEAD - mgarciaisaia
6
我无法相信这个答案(直接从文档中获取)仍然在13年后得到点赞。 :) - Randal Schwartz
2
@RandalSchwartz 您的回答很有帮助 ==> 您现在获得了一个赞。 - Yaakov Belch
3
在你不确定自己在寻找什么时,通过谷歌搜索答案(并且来到这里)比阅读大量文档要快得多。 - GreenGiant
最小的有效载荷确实是大约一兆字节。将其视为一个“polyfill”:一个层次结构,为所有浏览器提供相同的能力来渲染一个精心控制的画布。因此,对于“Hello World”程序来说是不公平的,但它只成为更大应用程序中的一个微小部分。 - Randal Schwartz

71
git log -1

仅针对提交 ID

git log | head -n 1 

谢谢,这很容易。 - eC Droid
只是提供信息:git log | head -1git log | head -n 1 是等价的。 - Milan
尽管 OP 只要求 HEAD 的提交 ID,但 git log -1 非常有用。因为它还显示了提交消息和其他细节,使进一步的分析/比较变得容易。谢谢! - Milan

21

旧的主题,仍然供将来参考...:) 以下内容也适用

git show-ref --head

默认情况下,HEAD被过滤掉了。 但是要注意,复数形式的"heads"末尾带有's'。以下命令显示了"refs/heads"下面的分支。

 git show-ref --heads

5
在一个(大型)git存储库中使用这些命令,我从 git show-ref --heads 得到两行输出,从 git show-ref --head 得到6290行输出。因此,如果你只想得到一个哈希值,这可能不是预期的结果。请注意,翻译过程中尽力保持原意,使内容更易懂,但不进行解释,不添加额外信息。 - Remigius Stalder

15

你可以指定git log选项仅显示最后一次提交,即-1,并使用仅包含提交ID的格式,如下所示:

git log -1 --format=%H

如果您喜欢缩短的提交ID:

git log -1 --format=%h


6

与Bash一起玩:

git show HEAD | sed -n 1p | cut -d " " -f 2

1
你可以使用以下命令: $ git rev-list HEAD
你也可以使用head Unix命令显示最新的n个HEAD提交,例如: $ git rev-list HEAD | head -n 2

1

git rev-parse --abbrev-ref HEAD


1
这不显示提交ID,而是与提交相关联的任何名称(如分支或标签)。这不是原始用户想要的。 - Asfand Qazi
1
@AsfandQazi 但这正是我想知道的,而我的谷歌搜索将我带到了这篇文章的顶部。 - Axel Bregnsbo

0

您可以使用

git log -g branchname

使用git reflog命令查看格式化的信息,类似于git log输出,并包含提交ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接