Git 查找未注明日期的提交的日期?

Git 查找未注明日期的提交的日期?,git,parsing,github,commit,Git,Parsing,Github,Commit,我正在做一个git日志,列出所有提交,然后解析它们。 使用此命令: git log --encoding=UTF-8 --date=local --pretty=format:'%H,%P,%at,%ct,%an,%s' 在一些奇怪的回购协议中,我得到的提交在作者和提交日期中都没有日期。 我试过简单的方法: git log 我得到的是1970年的约会 发生这种情况的回购,例如在提交e9dddaf24c9de45d9b4efdf38eff7c30eb200f48中 虽然在GitHub,我们有一

我正在做一个git日志,列出所有提交,然后解析它们。 使用此命令:

git log --encoding=UTF-8 --date=local --pretty=format:'%H,%P,%at,%ct,%an,%s'
在一些奇怪的回购协议中,我得到的提交在作者和提交日期中都没有日期。 我试过简单的方法:

git log
我得到的是1970年的约会

发生这种情况的回购,例如在提交
e9dddaf24c9de45d9b4efdf38eff7c30eb200f48

虽然在GitHub,我们有一个有趣的约会,当我们去寻找它的时候

<是否有人能帮我找到一个有趣的约会,这个约会应该在其他人中间?

< P> <代码> Git show -Frase= WRAW 显示:

commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 tree d63aeb159635cb231e191505a95a129a3b4a7b38 parent 9276202f1c0dcc360433df222c90f7874558f072 author SamWM <sam@webmonkeysolutions.com> 1288370243 --700 committer SamWM <sam@webmonkeysolutions.com> 1288370243 --700 因此,Git通常格式的正确答案是
Fri 29 Oct 09:37:23 2010-0700

注意:我使用的是
TZ=Etc/GMT+7
,而不是
GMT-7
。通过对具有正确时区信息的不同提交运行同一命令,可以看出结果与预期的完全一致
date
的时区转换对于这里需要的东西来说是完全错误的,通过抵消偏移量,我就抵消了错误

您可以在本地副本中使用
git hash object
git replace
修复此类提交。首先,检查我的命令是否有序:

$ git cat-file commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 | > git hash-object -t commit -w --stdin e9dddaf24c9de45d9b4efdf38eff7c30eb200f48
@rtfpessoa您确实需要使用raw来检查问题,但是您可以在本地修复问题,这样您就再也不会遇到问题了,我已经修改了我的答案来说明如何解决问题。@rtfpessoa您不需要推送到存储库,您可以像我一样在存储库的本地克隆中创建新对象,您仍然可以看到原始的提交ID。@rtfpessoa没错,这确实是一个非常特定的修复,但也是一个非常特定的情况。我以前从未见过这样的事情,也从未读过关于它的书;我很确定这不是一个普遍存在的bug,很少有存储库会受到影响。您已经在多个存储库中看到了它,它们是否可能包含来自同一作者的提交?@rtfpessoa我认为GitHub为此使用了自定义逻辑,这意味着它有效地使用了
git show--format=raw
并手动将时间戳转换为字符串。这允许它对输出格式进行额外的控制。因此,这意味着带有
--date=raw
%ad
的git日志存在错误,因为它没有显示原始日期值。对吗? $ git cat-file commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 | > git hash-object -t commit -w --stdin e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 $ git cat-file commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 | > sed -e 's/--700/-0700/' | > git hash-object -t commit -w --stdin 46694249ed3d519b0c934222520b9dc6d8557fa1 $ git replace e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 46694249ed3d519b0c934222520b9dc6d8557fa1 commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 Author: SamWM <sam@webmonkeysolutions.com> Date: Fri Oct 29 09:37:23 2010 -0700 Update version number, make text formatting and indentation consistent with the rest of the code