如何获取Git中当前提交的哈希?


当前回答

使用git rev list--max count=1 HEAD

其他回答

我知道的最简洁的方式是:

git show --pretty=%h 

如果您需要哈希的特定位数,可以添加:

--abbrev=n

提交哈希

git show -s --format=%H

缩写的提交哈希

git show -s --format=%h

-s标志与--no补丁相同,代表“抑制差异输出”。

单击此处查看更多git显示示例。

以下是另一种方法:)

git log | grep -o '\w\{8,\}' | head -n 1

git-rev-parse-HEAD完成了这个任务。

如果您需要在保存实际分行(如果有的话)之前将其存储到结账台:

cat .git/HEAD

示例输出:

ref: refs/heads/master

解析它:

cat .git/HEAD | sed "s/^.\+ \(.\+\)$/\1/g"

如果您有Windows,则可以考虑使用wsl.exe:

wsl cat .git/HEAD | wsl sed "s/^.\+ \(.\+\)$/\1/g"

输出:

refs/heads/master

该值可能稍后用于git签出,但它会指向其SHA。要使其通过名称指向实际的当前分支,请执行以下操作:

wsl cat .git/HEAD | wsl sed "s/^.\+ \(.\+\)$/\1/g" | wsl sed "s/^refs\///g"  | wsl sed "s/^heads\///g"

输出:

master

以下是Bashshell中使用直接从git文件读取的一行代码:

(head=($(<.git/HEAD)); cat .git/${head[1]})

您需要在git根文件夹中运行上述命令。

当您有存储库文件,但尚未安装git命令时,此方法很有用。

如果不起作用,请检查.git/refs/heads文件夹中您有什么样的头。