如何使用git show with pretty或format只提交消息简介?

时间:2016-04-17 13:03:59

标签: git shell github

输出应该看起来像git log,没有任何文件和代码更改只是提交消息简介,如下所示:

commit <sha1>
Author: <author>
Commit: <committer>
<title line>
<full commit message>

我有一些技巧,git显示漂亮或格式设置为'完整',但我不知道如何使用它。

4 个答案:

答案 0 :(得分:3)

我使用这个脚本(作为别名):

https://github.com/vheon/home/blob/master/.githelpers

git alias:

l = "!bash -c 'source ~/.githelpers && pretty_git_log'"

输出是这样的:

enter image description here

您必须使用自己的git log --pretty=format选项。

--pretty中,您可以设置颜色并选择要显示的任何内容

  

<强> format:<string>

     

格式:格式允许您指定要显示的信息。它的工作方式有点像printf格式,但有一个值得注意的例外,即你得到一个%n而不是\ n的换行符。

     

格式:The author of %h was %an, %ar%nThe title was >>%s<<%n将显示如下内容:

The author of fe6e0ee was Junio C Hamano, 23 hours ago
The title was >>t4119: test autocomputing -p<n> for traditional diff input.<<
  

<强> The placeholders are

     

%C(…):颜色规范,如color.branch。* config选项中所述;添加自动,在开始时将仅在为日志输出启用颜色时发出颜色(通过color.diff,color.ui或--color,并且如果我们要去终端则尊重前者的自动设置)。单独自动(即%C(自动))将打开下一个占位符的自动着色,直到再次切换颜色。

     

%C(…):颜色规范,如color.branch。* config选项中所述;添加自动,在开始时将仅在为日志输出启用颜色时发出颜色(通过color.diff,color.ui或--color,并且如果我们要去终端则尊重前者的自动设置)。单独自动(即%C(自动))将打开下一个占位符的自动着色,直到再次切换颜色。

     

%Cblue:将颜色切换为蓝色
  %Cgreen:将颜色切换为绿色
  %Cred:将颜色切换为红色
  %Creset:重置颜色
  %D:引用名称没有“(”,“)”包装。
  %G?:显示“G”表示签名,“B”表示不良签名,“U”表示良好的不可信签名,“N”表示无签名
  来自GPG的%GG:原始验证消息,用于签署的提交   %GK:显示用于签署签名提交的密钥   %GS:显示签名提交的签名者姓名   %H:提交哈希
  %N:提交备注
  %P:父哈希郎   %T:树形散列
  %aD:作者日期,RFC2822样式
  %aE:作者电子邮件(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %aI:作者日期,严格的ISO 8601格式
  %aN:作者姓名(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %ad:作者日期(格式尊重 - 日期=选项)
  %ae:作者电子邮件
  %ai:作者日期,类似ISO 8601的格式
  %an:作者姓名
  %ar:作者日期,亲属
  %at:作者日期,UNIX时间戳
  %b:身体   %cD:提交者日期,RFC2822样式
  %cE:提交者电子邮件(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %cI:提交者日期,严格的ISO 8601格式
  %cN:提交者名称(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %cd:提交者日期(格式尊重 - 日期=选项)
  %ce:提交者电子邮件
  %ci:提交者日期,类似ISO 8601的格式
  %cn:提交者姓名
  %cr:提交者日期,相对
  %ct:提交者日期,UNIX时间戳
  %d:引用名称,如git-log(1)的--decorate选项   %e:编码
  %f:已清理的主题行,适用于文件名
  %gD: reflog选择器,例如,refs / stash @ {1}   %gE: reflog身份电子邮件(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %gN: reflog身份名称(尊重.mailmap,请参阅git-shortlog(1)或git-blame(1))
  %gd:缩短了reflog选择器,例如,stash @ {1}   %ge: reflog身份电子邮件
  %gn: reflog身份名称
  %gs: reflog主题
  %h:缩写提交哈希
  %m:左,右或边界标记
  %n:换行符   %p:缩写为父哈希值   %s:主题
  %t:缩写树哈希
  %w([<w>[,<i1>[,<i2>]]]):切换换行,就像git-shortlog(1)的-w选项一样   %x00:从十六进制代码中打印一个字节

答案 1 :(得分:1)

为了提供一个不像单独的shell脚本那么复杂的答案,但仍然展示了选项--pretty的强大功能,我将描述我目前首选的git log别名:

[alias]
   lg = log --decorate --graph --pretty=tformat:'%C(dim white)%m%C(dim green)%h %C(dim cyan)%cd %C(yellow)%<(12,trunc)%aN %C(reset)%s%C(auto)%w(0,0,9)%+d%C(reset)' --decorate --graph

--pretty

中使用过的功能
  • %C(<color name>)设置文字颜色,%Creset还原(请参阅git help config了解可能的值)
  • %<(<width>,..)将提交作者姓名%aN截断为基于列的布局的最大宽度
  • %w(0,0,9)让第二行缩进9个空格(大致是许多repos中缩写提交ID的宽度)
  • 装饰占位符+中的前缀%d( - &gt; %+d)将分支/标记装饰放在第二行,同时保持线性提交紧密间隔
  • %m边界标记以识别“左”和“右”提交(很少使用)

预览

git lg preview

我也在.gitconfig中设置了日期格式:

[log]
     date = format:%Y-%m-%d %H:%M

答案 2 :(得分:1)

<强> git show --format="YOUR_FORMAT" -s

-s可以抑制差异显示。

YOUR_FORMAT记录于:

man git-log

部分PRETTY FORMATS

例如,要为少数SHA提供SHA和作者电子邮件:

git show --format="%H %ae" -s 62f6870e4e0b384c4bd2d514116247e81b241251 96ee0246ce52012644dd18cf360e64c49016fb7f

给出格式的输出:

62f6870e4e0b384c4bd2d514116247e81b241251 author@mail.com
96ee0246ce52012644dd18cf360e64c49016fb7f author@mail.com

要为格式添加换行符和更多字段,您可以执行以下操作:

git show --format=$'%H\n%ae\n%an\n' -s 62f6870e4e0b384c4bd2d514116247e81b241251 96ee0246ce52012644dd18cf360e64c49016fb7f

为表单提供输出:

62f6870e4e0b384c4bd2d514116247e81b241251
author@mail.com
Ciro Santilli

96ee0246ce52012644dd18cf360e64c49016fb7f
author@mail.com
Ciro Santilli

答案 3 :(得分:0)

你应该使用

git log --oneline

仅查看标题和哈希的开头。

有关详细信息,请查看git help log