如何更改 Git 日志日期格式
我正在尝试显示 Git 中的最后一次提交,但我需要特殊格式的日期。
我知道日志漂亮格式 %ad
尊重 --date
格式,但我能找到的唯一 --date
格式是“short ”。我想了解其他的,以及我是否可以创建一个自定义的,例如:
git -n 1 --date=**YYMMDDHHmm** --pretty=format:"Last committed item in this release was by %%an, %%aD, message: %%s(%%h)[%%d]"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(12)
除了
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
之外,正如其他人提到的,您还可以使用自定义日志日期格式输出类似
2016-01-13 11:32:13
的内容。注意:如果您查看下面链接的提交,我相信您至少需要 Git v2.6.0-rc0 才能正常工作。
在完整的命令中,它会类似于:
我无法在任何地方的文档中找到它(如果有人知道在哪里可以找到它,请发表评论),所以我最初通过反复试验找到了占位符。
在我搜索相关文档时,我发现 对 Git 本身的提交 表明格式是直接馈送到
strftime
。查找strftime
(此处 或 此处)我发现的占位符与列出的占位符匹配。占位符包括:
In addition to
--date=(relative|local|default|iso|iso-strict|rfc|short|raw)
, as others have mentioned, you can also use a custom log date format withThis outputs something like
2016-01-13 11:32:13
.NOTE: If you take a look at the commit linked to below, I believe you'll need at least Git v2.6.0-rc0 for this to work.
In a full command it would be something like:
I haven't been able to find this in documentation anywhere (if someone knows where to find it, please comment) so I originally found the placeholders by trial and error.
In my search for documentation on this I found a commit to Git itself that indicates the format is fed directly to
strftime
. Looking upstrftime
(here or here) the placeholders I found match the placeholders listed.The placeholders include:
其他的是(来自
git help log
):据我所知,没有内置方法可以创建自定义格式,但您可以执行一些 shell 魔法。
这里的第一步为您提供毫秒时间戳。您可以更改第二行以设置您想要的时间戳格式。此示例为您提供了类似于
--date=local
的内容,并带有填充的日期。如果您想要永久效果而不是每次都输入此内容,请尝试
Or,以影响此帐户的所有 git 使用情况
The others are (from
git help log
):There is no built-in way that I know of to create a custom format, but you can do some shell magic.
The first step here gets you a millisecond timestamp. You can change the second line to format that timestamp however you want. This example gives you something similar to
--date=local
, with a padded day.And if you want permanent effect without typing this every time, try
Or, for effect on all your git usage with this account
经过很长时间寻找一种方法来获取
git log
以YYYY-MM-DD
格式输出日期,以less
工作的方式code>,我想出了以下格式:以及开关
--date=iso
。这将以 ISO 格式(很长的格式)打印日期,然后打印 14 次退格字符 (0x08),这在我的终端中有效地删除了 YYYY-MM-DD 部分之后的所有内容。例如:
这给出了类似的内容:
我所做的是创建一个名为
l
的别名,并对上面的格式进行了一些调整。它在左侧显示提交图,然后是提交的哈希值,然后是日期、短名称、引用名称和主题。别名如下(在~/.gitconfig中):After a long time looking for a way to get
git log
output the date in the formatYYYY-MM-DD
in a way that would work inless
, I came up with the following format:along with the switch
--date=iso
.This will print the date in ISO format (a long one), and then print 14 times the backspace character (0x08), which, in my terminal, effectively removes everything after the YYYY-MM-DD part. For example:
This gives something like:
What I did was create an alias named
l
with some tweaks on the format above. It shows the commit graph to the left, then the commit's hash, followed by the date, the shortnames, the refnames and the subject. The alias is as follows (in ~/.gitconfig):我需要同样的东西,并发现以下内容对我有用:
--date=format
格式化日期输出,其中--pretty
告诉打印什么。I needed the same thing and found the following working for me:
The
--date=format
formats the date output where the--pretty
tells what to print.您可以使用字段截断选项来避免出现太多
%x08
字符。例如:相当于:
并且对眼睛来说更容易。
更好的是,对于这个特定的示例,使用
%cd
将遵循--date=
,因此如果您想要YYYY-MM-DD< /code>,你可以这样做并完全避免
%<
和%x08
:我只是注意到这相对于原始帖子有点循环,但我会保留它,以防其他人使用与我相同的搜索参数到达这里 做过。
You can use the field truncation option to avoid quite so many
%x08
characters. For example:is equivalent to:
And quite a bit easier on the eyes.
Better still, for this particular example, using
%cd
will honor the--date=<format>
, so if you wantYYYY-MM-DD
, you can do this and avoid%<
and%x08
entirely:I just noticed this was a bit circular with respect to the original post but I'll leave it in case others arrived here with the same search parameters I did.
2014 :注意“
date=iso
”格式:它不完全 ISO 8601。请参阅 466fb67” /bbolli" rel="nofollow noreferrer">击败博利(
bbolli
),对于 Git 2.2.0(2014 年 11 月)来说非常漂亮:提供严格的 ISO 8601 日期格式
请参阅 此帖子进行讨论。
对于 Git 2.45(2024 年第 2 季度),批次 10,日期的输出格式为“< code>iso-strict”已被调整以显示祖鲁时区时间,后缀为“
Z
”,而不是“+00:00
”。请参阅 提交 69e2bee(2024 年 3 月 13 日),作者:击败 Bolli (
bbolli
)。(由 Junio C Hamano --
gitster
-- 合并于 提交 1f49f75,2024 年 3 月 21 日)2014 : Be aware of the "
date=iso
" format: it isn't exactly ISO 8601.See commit "466fb67" from Beat Bolli (
bbolli
), for Git 2.2.0 (November 2014)pretty: provide a strict ISO 8601 date format
See this thread for discussion.
With Git 2.45 (Q2 2024), batch 10, the output format for dates "
iso-strict
" has been tweaked to show a time in the Zulu timezone with "Z
" suffix, instead of "+00:00
".See commit 69e2bee (13 Mar 2024) by Beat Bolli (
bbolli
).(Merged by Junio C Hamano --
gitster
-- in commit 1f49f75, 21 Mar 2024)请注意,如果这对您的用例很重要,这将转换为您当地的时区。
Note that this will convert to your local timezone, in case that matters for your use case.
在 Git 2.21(2019 年第一季度)中,一种新的日期格式“
--date= human
”根据时间与当前时间的距离来改变其输出时间已介绍。当输出发送到寻呼机或终端时,可以使用“
--date=auto
”来使用这种新格式,否则使用默认格式。请参阅提交110a6a1,提交 b841d4f(2019 年 1 月 29 日),以及 提交 038a878, 提交 2fd7c22(2019 年 1 月 21 日),作者:斯蒂芬·P·史密斯(``)。
请参阅 提交 acdd377(2019 年 1 月 18 日),作者:莱纳斯·托瓦兹(
托瓦尔兹
)。(由 Junio C Hamano --
gitster
-- 合并于 提交ecbe1be,2019 年 2 月 7 日)Git 2.24(2019 年第 4 季度)简化了代码。
请参阅提交47b27c9,提交 29f4332(2019 年 9 月 12 日),作者:斯蒂芬·P·史密斯(``)。
(由 Junio C Hamano --
gitster
-- 合并于 提交36d2fca,2019 年 10 月 7 日)使用 Git 2.32(2021 年第 2 季度),“
git日志--format=...
"(man) 占位符学习%ah
/%ch
占位符来请求--date =人类输出。
请参阅 提交 b722d45(2021 年 4 月 25 日),作者:胡哲宁(
替代方案
)。(由 Junio C Hamano --
gitster
-- 合并于 提交f16a466,2021 年 5 月 7 日)pretty-formats
现在包含在其 手册页:漂亮-格式
现在包含在其手册页:With Git 2.21 (Q1 2019), a new date format "
--date=human
" that morphs its output depending on how far the time is from the current time has been introduced."
--date=auto
" can be used to use this new format when the output is going to the pager or to the terminal and otherwise the default format.See commit 110a6a1, commit b841d4f (29 Jan 2019), and commit 038a878, commit 2fd7c22 (21 Jan 2019) by Stephen P. Smith (``).
See commit acdd377 (18 Jan 2019) by Linus Torvalds (
torvalds
).(Merged by Junio C Hamano --
gitster
-- in commit ecbe1be, 07 Feb 2019)Git 2.24 (Q4 2019) simplified the code.
See commit 47b27c9, commit 29f4332 (12 Sep 2019) by Stephen P. Smith (``).
(Merged by Junio C Hamano --
gitster
-- in commit 36d2fca, 07 Oct 2019)With Git 2.32 (Q2 2021), "
git log --format=...
"(man) placeholders learned%ah
/%ch
placeholders to request the--date=human
output.See commit b722d45 (25 Apr 2021) by ZheNing Hu (
adlternative
).(Merged by Junio C Hamano --
gitster
-- in commit f16a466, 07 May 2021)pretty-formats
now includes in its man page:pretty-formats
now includes in its man page:Git 2.7(2015 年第 4 季度)将引入
-local
作为指令。这意味着,除了:
您还将拥有:
-local
后缀不能与raw
或relative
一起使用。 参考。您现在可以使用请求任何日期格式当地时区。
请参阅
johnkeeping
)。请参阅提交add00ba,提交 547ed71(2015 年 9 月 3 日),作者:杰夫·金(
peff
)。(由 Junio C Hamano --
gitster
-- 合并于 提交7b09c45,2015 年 10 月 5 日)特别是,上面的最后一个(commit add00ba)提到:
Git 2.7 (Q4 2015) will introduce
-local
as an instruction.It means that, in addition to:
you will also have:
The
-local
suffix cannot be used withraw
orrelative
. Reference.You now can ask for any date format using the local timezone.
See
johnkeeping
).See commit add00ba, commit 547ed71 (03 Sep 2015) by Jeff King (
peff
).(Merged by Junio C Hamano --
gitster
-- in commit 7b09c45, 05 Oct 2015)In particular, the last from above (commit add00ba) mentions:
格式选项
%ai
是我想要的:The format option
%ai
was what I wanted:使用 Bash 和 date 命令将类似 ISO 的格式转换为您想要的格式。我想要一个 org-mode 日期格式(和列表项),所以我这样做了:
结果例如:
Use Bash and the date command to convert from an ISO-like format to the one you want. I wanted an org-mode date format (and list item), so I did this:
And the result is for example: