git log只显示一个提交ID

rke*_*x21 56 git git-log git-commit

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

我用这个命令

       git log -3 --pretty=format:"%h"
Run Code Online (Sandbox Code Playgroud)

结果是

       ffbef87
       cf0e073
       1c76c5d
Run Code Online (Sandbox Code Playgroud)

我只想显示1c76c5d.

Enr*_*lio 56

您可以使用git show 引用当前提交中的第三个父级(即第二个祖先HEAD).此外,git show接受相同的格式字符串git log:

git show HEAD~2 --pretty=format:"%h" --no-patch
Run Code Online (Sandbox Code Playgroud)

更新(2016-12-01)

更好的方法是使用plumbing命令和输出缩写(7个字符)提交ID的选项:rev-parse --short

git rev-parse --short HEAD~2
Run Code Online (Sandbox Code Playgroud)

或者您也可以指定提交ID的确切长度:

git rev-parse --short=4 HEAD~2
Run Code Online (Sandbox Code Playgroud)

  • @GitSyncApp`-- no-patch`抑制`git show`的diff输出. (2认同)

And*_*ndy 7

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

   git log -1 --skip 2 --pretty=format:"%h"
Run Code Online (Sandbox Code Playgroud)

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


Dyl*_*ung 6

有一个用于此的工具:

git log -3 --pretty=format:"%h" | tail -n 1
Run Code Online (Sandbox Code Playgroud)

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

--abbrev=n 
Run Code Online (Sandbox Code Playgroud)

Unix哲学的相关部分

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

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

... [即]

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

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