Git如何保存预设的git log --format
Posted
技术标签:
【中文标题】Git如何保存预设的git log --format【英文标题】:Git how to save a preset git log --format 【发布时间】:2010-11-29 07:05:03 【问题描述】:我真的很喜欢简短的 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
(来自***问题“link text”)
现在的问题是,如何在我的机器上将其保存为新格式,这样我只需要编写类似的内容,例如:
git log --format=jespers_favourite
【问题讨论】:
在您发表评论后,我已经修复了答案。 【参考方案1】:在较新版本的 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
,除非另有定义。
【讨论】:
这几乎是正确的,但有几个重要的警告:名称不能包含下划线(至少在 Git 1.7.10 中),自定义格式必须以“格式: "(或引用其中一种内置格式)。【参考方案2】:考虑到 git log 手册页提到:
--pretty[=<format>]
--format[=<format>]
以给定的格式漂亮地打印提交日志的内容,其中可以是 oneline、short、medium、full、fuller、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"
【讨论】:
@ftassi 好点。我已经恢复了链接(你提到的那个)。 为了完成这项工作,我也需要转义引号 @ftassi 您需要在git config alias.xxx...
命令中转义引号吗?不在.config
文件中?
@VonC 我已经将它们转义到 ~/.gitconfig 文件中,这是我正在使用的东西的 sn-p gist.github.com/283ad42cd367ec35cf76
自我提醒:通过这次投票,我在 Stack Overflow 上通过了 110 万(2022 年 1 月 28 日),比 reaching 1M (Nov. 29th, 2020) 晚了一年零两个月。【参考方案3】:
您可以使用 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 config 设置一样,format.pretty 可以设置在全局、系统或存储库范围(默认)。
【讨论】:
仅供参考,更改默认格式听起来不像问题最初想要的,但这是一个有用的补充点。【参考方案4】:使用最新版本的 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=relative
或default
、iso8601
、local
、raw
、relative
、rfc2822
、short
中的任何一个进行修改;所以我喜欢这样使用它:
git log -25 --pretty=dateline --date=short -- when/was/this/changed.txt
【讨论】:
format.pretty
配置的有趣使用,以及对我 2009 年旧答案的不错更新!赞成。以上是关于Git如何保存预设的git log --format的主要内容,如果未能解决你的问题,请参考以下文章