如何获取Git中当前提交的哈希?
当前回答
要获取缩短的提交哈希,请使用%h格式说明符:
git log --pretty=format:'%h' -n 1
%H表示长提交哈希。此外,可以直接使用-1代替-n 1。
其他回答
以下是Bashshell中使用直接从git文件读取的一行代码:
(head=($(<.git/HEAD)); cat .git/${head[1]})
您需要在git根文件夹中运行上述命令。
当您有存储库文件,但尚未安装git命令时,此方法很有用。
如果不起作用,请检查.git/refs/heads文件夹中您有什么样的头。
如果你想要超级黑客的方式:
cat .git/`cat .git/HEAD | cut -d \ -f 2`
基本上,git将HEAD的位置存储在.git/HEAD中,格式为ref:{path from.git}。此命令将读取该位置,将“ref:”切片,并读取它指向的任何文件。
当然,这在分离头模式下会失败,因为head不会是“ref:…”,而是哈希本身-但你知道,我认为你不会期望在bash一行中有那么多聪明。如果你不认为分号是作弊的话。。。
HASH="ref: HEAD"; while [[ $HASH == ref\:* ]]; do HASH="$(cat ".git/$(echo $HASH | cut -d \ -f 2)")"; done; echo $HASH
另一个,使用git-log:
git log -1 --format="%H"
它与“outofculture”非常相似,不过稍短一些。
也许你想要一个别名,这样你就不必记住所有漂亮的细节。完成以下步骤之一后,您将能够简单地键入:
$ git lastcommit
49c03fc679ab11534e1b4b35687b1225c365c630
根据公认的答案,有两种设置方法:
1) 通过编辑全局配置(我最初的答案),教git明确的方法:
# open the git config editor
$ git config --global --edit
# in the alias section, add
...
[alias]
lastcommit = rev-parse HEAD
...
2) 或者如果你喜欢一个快捷方式来教git一个快捷方法,正如Adrien最近评论的那样:
$ git config --global alias.lastcommit "rev-parse HEAD"
从这里开始,使用gitlastcommit显示最后一次提交的哈希。
在文件“.gitconfig”的主目录中添加以下内容
[alias]
sha = rev-parse HEAD
那么您将有一个更容易记住的命令:
$ git sha
59fbfdbadb43ad0b6154c982c997041e9e53b600
推荐文章
- 如何将git配置存储为存储库的一部分?
- 如何修改GitHub拉请求?
- 如何在Github和本地删除最后n次提交?
- 我如何调试git/git-shell相关的问题?
- 错误:无法使用rebase进行拉取:您有未分阶段的更改
- Git隐藏未缓存:如何把所有未分期的变化?
- 真实的恶魔
- 如何从另一个分支获得更改
- Git:权限被拒绝(publickey)致命-无法从远程存储库读取。克隆Git存储库时
- git reflog和log有什么区别?
- git推挂在Total line之后
- 重命名git子模块
- 结合Git存储库的前两次提交?
- Xcode 6 gitignore文件应该包括什么?
- 我如何从现有回购的分支创建一个新的GitHub回购?