如何获取Git中当前提交的哈希?
当前回答
我需要一些更不同的东西:显示提交的完整sha1,但如果工作目录不干净,则在末尾添加星号。除非我想使用多个命令,否则前面答案中的选项都不起作用。
这是一个可以:git-descripte--always--abbrev=0--match“NOT A TAG”--dirty=“*”结果:f5366ccb21588c0d7a5f7d9fa1d3f85e9f9d1ffe*
说明:描述(使用带注释的标记)当前提交,但仅使用包含“NOT A TAG”的标记。由于标记不能有空格,因此这永远不会与标记匹配,并且因为我们希望显示一个结果——始终,命令会返回显示提交的完整(--abbrev=0)sha1,如果工作目录是--dirty,则会附加一个星号。
如果您不想附加星号,这与前面回答中的所有其他命令一样:git-descripte--always--abbrev=0--match“NOT A TAG”结果:f5366ccb21588c0d7a5f7d9fa1d3f85e9f9d1ffe
其他回答
以下是Bashshell中使用直接从git文件读取的一行代码:
(head=($(<.git/HEAD)); cat .git/${head[1]})
您需要在git根文件夹中运行上述命令。
当您有存储库文件,但尚未安装git命令时,此方法很有用。
如果不起作用,请检查.git/refs/heads文件夹中您有什么样的头。
以下是另一种方法:)
git log | grep -o '\w\{8,\}' | head -n 1
要获取缩短的提交哈希,请使用%h格式说明符:
git log --pretty=format:'%h' -n 1
%H表示长提交哈希。此外,可以直接使用-1代替-n 1。
在文件“.gitconfig”的主目录中添加以下内容
[alias]
sha = rev-parse HEAD
那么您将有一个更容易记住的命令:
$ git sha
59fbfdbadb43ad0b6154c982c997041e9e53b600
也总是有数字描述。默认情况下,它为您提供--
john@eleanor:/dev/shm/mpd/ncmpc/pkg (master)$ git describe --always
release-0.19-11-g7a68a75
推荐文章
- 在单个文件中重新启动/撤消冲突解决方案
- Visual Studio代码如何解决合并冲突与git?
- 无法推送到远程分支,无法解析到分支
- Git:如何将数据库重置为特定的提交?
- 如何在合并期间使用Git和命令行保存本地文件或远程文件?
- 能够用一个命令推到所有git遥控器?
- 重新基于Git合并提交
- 忽略已经签入目录的内容?
- 如何从windows cmd保存git提交消息?
- (Mac) -bash: __git_ps1:命令未找到
- 如何删除多个已删除的文件在Git仓库
- 使用vimdiff查看所有' git diff '
- 如何拉特定的目录与git
- 本地存储库中的文件与源文件之间的差异
- 将Git存储库内容移动到另一个存储库,保存历史记录