git log仅显示一个提交ID


77

我需要一些帮助。可能只显示一个提交ID?由于git log -3显示1-3的日志,所以我只想显示3。什么可能的命令将与其匹配?

我使用命令

       git log -3 --pretty=format:"%h"

结果是

       ffbef87
       cf0e073
       1c76c5d

我只想显示1c76c5d

Answers:


69

您可以使用当前提交中git show 的第三个父级(即来自的第二个祖先HEAD)进行引用。另外,git show接受与相同的格式字符串git log

git show HEAD~2 --pretty=format:"%h" --no-patch

更新(2016-12-01

更好的方法是使用plumbing命令,并带有输出缩写(7个字符)的提交SHA-1的选项:rev-parse --short

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':未知版本或不在工作树中的路径。使用“-”将路径与修订版本分开,例如:'git <命令> [<版本> ...]-[<文件> ...]'
rkevx21

难道这是head~2您历史上的第一次提交?
恩里科·坎皮多里奥

要引用问题中的提交,您需要使用head~2
恩里科·坎皮多里奥

1
@KasunSiyambalapitiya因为git show还会输出与提交(即补丁)相关的差异,但是在这种情况下我们对此不感兴趣。
恩里科·坎皮多廖

2
@GitSyncApp--no-patch抑制的差异输出git show
恩里科·坎皮多里奥

14

有一个用于此的工具:

git log -3 --pretty=format:"%h" | tail -n 1

您可以n使用以下标志包括哈希字符(而不是默认字符):

--abbrev=n 

Unix哲学的相关部分

1)让每个程序做好一件事情。要完成一项新工作,请重新构建而不是通过添加新的“功能”使旧程序复杂化。

2)期望每个程序的输出都将成为另一个程序(尚未知道)的输入。不要将多余的信息弄乱。避免严格使用列或二进制输入格式。不要坚持交互式输入。

... [即]

  • 编写可以做一件事并且做得很好的程序。
  • 编写程序以协同工作。

https://zh.wikipedia.org/wiki/Unix_哲学


8

由于版本至少为git 2.3.8,因此可以使用以下--skip选项:

   git log -1 --skip 2 --pretty=format:"%h"

不知道哪个早期版本的git支持--skip

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.