gpt4 book ai didi

git - 查找未注明日期的提交日期?

转载 作者:太空狗 更新时间:2023-10-29 13:13:02 26 4
gpt4 key购买 nike

我正在做一个 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-objectgit 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com