Git如何保存预设的git log --format

时间:2009-09-17 20:28:48

标签: git formatting logging

我非常喜欢简短的git日志格式,我可以在这里看到作者,日期和更改说明:

git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

哪个输出:

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi

(来自stackoverflow问题“link text”)

现在,问题是,如何将其保存为我的机器上的新格式,因此我只需编写类似的内容,例如:

git log --format=jespers_favourite

4 个答案:

答案 0 :(得分:33)

在较新版本的Git中(使用v1.7.8确认),可以使用git config pretty.named_format设置命名的漂亮日志格式。可以使用<file-option>参数在计算机范围,用户或文件级别设置这些参数。

创建名为jespers_favourite的日志格式或整个机器使用--system

git config --system pretty.jespers_favourite "%h%x09%an%x09%ad%x09%s"

对于单个用户使用'--global'

git config --global pretty.jespers_favourite "%h%x09%an%x09%ad%x09%s"

<file-option>参数留空将默认为设置当前存储库的配置文件.git/config,除非另有定义。

答案 1 :(得分:21)

考虑git log手册页提及:

--pretty[=<format>]
--format[=<format>]
  

以给定格式打印提交日志的内容,其中可以是oneline,short,medium,full,fulller,email,raw和format之一:省略时,格式默认为中等。

<format>只能有预定义的值 只允许define an alias作为该命令的快捷方式。

[alias]
        jespers_favourite = log --pretty=format:"%h%x09%an%x09%ad%x09%s"

[alias]
        compactlog = log --pretty=format:"%h%x09%an%x09%ad%x09%s"

答案 2 :(得分:1)

您可以使用git-config配置默认的漂亮格式。从git-config文档:

 format.pretty
           The default pretty format for log/show/whatchanged command, See git-log(1), git-show(1), git-whatchanged(1).

例如:

git config --add format.pretty fuller

或原始海报所需的格式:

git config --add format.pretty "%h%x09%an%x09%ad%x09%s"

与其他git配置设置一样,format.pretty可以在全局,系统或存储库范围内设置(默认)。

答案 3 :(得分:1)

使用最新版本的git(此处为1.7…2.21),您可以将默认格式更改为命名格式或格式字符串。在执行此操作时,您还可以添加一些PRETTY FORMATS自动颜色。另外,我发现编辑文件比使用命令更容易。但我首先从他们那里获取正确的配置文件格式,然后再修改。

默认值更改为:

git config --global --add format.pretty \
"%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s"

在您的.gitconfig中添加了以下内容:

[format]
    pretty = %C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s

但是,添加一个命名格式对您可能更有用,如问题的后面部分所述。

添加了命名格式:

git config --global pretty.dateline \
"format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s"

或通过将您的.gitconfig添加为:

[pretty]
    dateline = format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s

结合使用:

如果同时添加两者,则可以使它们显示为:

[pretty]
    dateline = format:%C(yellow)%h%Creset%x09%Cred%<(13)%an%Creset%x09%Cblue%ad%Creset%x09%s

[format]
    pretty = dateline

注意事项:

应注意format:前缀的区别,我个人希望保留默认的漂亮格式为medium。如您所知,%ad部分可以由--date=relativedefaultiso8601localraw,{{1}中的任何一个修改},relativerfc2822;所以我喜欢这样使用它:

short