- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在做一个 git log 来列出所有提交,然后解析它们。使用此命令:
git log --encoding=UTF-8 --date=local --pretty=format:'%H,%P,%at,%ct,%an,%s'
在一些奇怪的 repo 中,我得到的提交在作者和提交日期中都没有日期。我尝试了简单的:
git log
我得到的是 1970 年的日期。
发生这种情况的 repo 是 SamWM/jQuery-Plugins ,例如在提交 e9dddaf24c9de45d9b4efdf38eff7c30eb200f48
中。
虽然在 GitHub 中我们有一个有趣的日期,但我们去寻找它。
任何人都可以帮助我为这个提交找到一个有趣的日期,该日期应该在其他提交的中间某个地方吗?
最佳答案
git show --format=raw
显示:
commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48tree d63aeb159635cb231e191505a95a129a3b4a7b38parent 9276202f1c0dcc360433df222c90f7874558f072author SamWM <sam@webmonkeysolutions.com> 1288370243 --700committer SamWM <sam@webmonkeysolutions.com> 1288370243 --700
此处的时区信息无效,我不确定作者是如何创建的。其他提交确实使用了正确的 -0700
格式。
您可以使用 GNU 日期转换它,知道 --700
应该是 -0700
:
$ TZ=Etc/GMT+7 date -d @1288370243Fri 29 Oct 09:37:23 GMT+7 2010
所以 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 --stdine9dddaf24c9de45d9b4efdf38eff7c30eb200f48
此命令加载指定的提交,将其原封不动地写回,并显示重写的提交的哈希值。我将其用作健全性检查:如果我得到不同的哈希值,则我的命令中一定有问题。
现在,可以插入一些内容来创建固定提交:
$ git cat-file commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 |> sed -e 's/--700/-0700/' |> git hash-object -t commit -w --stdin46694249ed3d519b0c934222520b9dc6d8557fa1
并改用该固定提交:
$ git replace e9dddaf24c9de45d9b4efdf38eff7c30eb200f48 46694249ed3d519b0c934222520b9dc6d8557fa1
After that, all references to e9dddaf24c9de45d9b4efdf38eff7c30eb200f48
will look at 46694249ed3d519b0c934222520b9dc6d8557fa1
instead, and git show e9dddaf24c9de45d9b4efdf38eff7c30eb200f48
now starts with:
commit e9dddaf24c9de45d9b4efdf38eff7c30eb200f48Author: 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
关于git - 查找未注明日期的提交日期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23793188/
我是一名优秀的程序员,十分优秀!