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工作树。使用 '--' 将路径与修订分开,如下所示:'git [...] -- [...]' 难道head~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的主要内容,如果未能解决你的问题,请参考以下文章

在其他提交的上下文中显示 git log 中的特定提交?

git log

如何配置“git log”以显示“提交日期”

git log 查看提交记录

Git Tfs 克隆仅显示主分支上的提交

git学习——git log操作