git log 仅显示一个提交 ID
Posted
技术标签:
【中文标题】git log 仅显示一个提交 ID【英文标题】:git log show one commit id only 【发布时间】:2015-10-05 13:24:37 【问题描述】:我需要一些帮助。是否可以只显示一个提交 ID?由于 git log -3 显示从 1 到 3 的日志,我只想显示 3。什么可能的命令将匹配它?
我使用命令
git log -3 --pretty=format:"%h"
结果是
ffbef87
cf0e073
1c76c5d
我只想显示 1c76c5d 而已。
【问题讨论】:
【参考方案1】:您可以使用当前提交中的git show
referencing the third parent(即来自HEAD
的第二个祖先)。此外,git show
接受与git log
相同的格式字符串:
git show HEAD~2 --pretty=format:"%h" --no-patch
更新(2016-12-01)
更好的方法是使用 rev-parse
plumbing command 和 --short
选项来输出缩写(7 个字符)提交 SHA-1:
git rev-parse --short HEAD~2
或者您也可以指定提交 SHA-1 的确切长度:
git rev-parse --short=4 HEAD~2
【讨论】:
当我使用 git show head~3 --pretty=format:"%h" --no-patch 时,它说致命:不明确的参数 'HEAD~3': unknown revision or path not in工作树。使用 '--' 将路径与修订分开,如下所示:'githead~2
是你历史上的第一个提交?
要引用问题中的提交,您需要使用head~2
。
@KasunSiyambalapitiya 因为git show
还输出与提交相关的差异(即补丁),但在这种情况下我们对此不感兴趣。
@GitSyncApp --no-patch
抑制 git show
的差异输出。【参考方案2】:
至少从 git 版本 2.3.8 开始,您可以使用--skip
选项:
git log -1 --skip 2 --pretty=format:"%h"
不确定哪些早期版本的 git 支持--skip
。
【讨论】:
【参考方案3】:有一个工具:
git log -3 --pretty=format:"%h" | tail -n 1
您可以使用以下标志包含 n
哈希字符(而不是默认值):
--abbrev=n
Unix 哲学的相关部分
1) 让每个程序做好一件事。要完成一项新工作,请重新构建而不是通过添加新“功能”使旧程序复杂化。
2) 期望每个程序的输出成为另一个未知程序的输入。不要用无关信息使输出混乱。避免严格的列式或二进制输入格式。不要坚持交互式输入。
... [即]
编写只做一件事并做好的程序。 编写程序以协同工作。
https://en.wikipedia.org/wiki/Unix_philosophy
【讨论】:
以上是关于git log 仅显示一个提交 ID的主要内容,如果未能解决你的问题,请参考以下文章