在用户的时区中以ISO格式显示git日志时间戳?

时间:2015-01-13 17:40:19

标签: git datetime

--date=local git log在我的(用户' s)时区显示日期:

$ git log  --date=local -3 --pretty=tformat:'%cd %h' --abbrev-commit 
Thu Dec 18 15:22:11 2014 dc20f74
Thu Dec 18 14:01:26 2014 06c214f
Tue Nov 4 03:48:44 2014 ac33158

man-page

  

- date [...]仅对以人类可读格式显示的日期生效,例如使用--pretty时。

但是使用ISO格式%ci它不起作用,事实上--date=local--date=default产生完全相同的输出:

$ git log  --date=local -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74
2014-12-18 22:01:26 +0000 06c214f
2014-11-04 17:18:44 +0530 ac33158

$ git log  --date=default -3 --pretty=tformat:'%ci %h' --abbrev-commit 
2014-12-18 23:22:11 +0000 dc20f74
2014-12-18 22:01:26 +0000 06c214f
2014-11-04 17:18:44 +0530 ac33158

如何在本地时区以较简洁的格式查看git log?理想情况下,我希望在'%C%m%dT%H%M%S'中看到它们,以使用unix日期语法。

2 个答案:

答案 0 :(得分:7)

git 2.7(2015年第4季度)可以引入-local作为指令。

这意味着,除了:

--date=(relative|local|default|iso|iso-strict|rfc|short|raw)

您还将拥有:

--date=(relative-local|default-local|iso-local|iso-strict-local|rfc-local|short-local|raw-local)

您现在可以使用本地时区要求任何日期格式

在你的情况下:

git log  --date=iso-local -3 --pretty=tformat:'%cd %h' --abbrev-commit
                ^^^^^^^^^
                   |____| that part is new!

请参阅commit 99264e9commit db7bae2commit dc6d782commit f3c1ba5commit f95cecfcommit 4b1c5e1commit 8f50d26,{{3} },commit 78a8441(2015年9月3日)commit 2df4e29John Keeping (johnkeeping)查看commit add00bacommit 547ed71(2015年9月3日) Jeff King (peff)合并于Junio C Hamano -- gitster --,2015年10月5日)

特别提到commit 7b09c45

  

date:make" local"与日期格式正交:

     

我们的大部分" --date"模式是关于日期的格式:我们显示的项目和顺序   但是" --date=local"有点奇怪。这意味着"以正常格式显示日期,但使用当地时区"。
  我们使用的时区与实际格式正交,我们没有理由不能将#8;本地化iso8601"等等。

     

此补丁添加了" local"布尔字段为" struct date_mode",并从DATE_LOCAL枚举中删除date_mode_type元素(它现在只有DATE_NORMAL加{{ 1}})。
  用户可以通过添加" local=1"来访问新功能。到任何日期模式(例如," -local"),我们保留" iso-local"作为" local"的别名为了向后兼容。

答案 1 :(得分:0)

似乎无法显示转换为本地用户时区的%ci(ISO时间格式);它总是显示在提交者的时区。您可以使用%ct并解析输出并使用date或其他脚本等实用程序重新格式化,或使用%cd