【问题标题】:Can someone check I changed the date of git commits?有人可以检查我更改了 git 提交的日期吗?
【发布时间】:2021-10-16 05:26:26
【问题描述】:

我在 github 中创建了一个私有存储库,在每次提交时,我都更改了本地计算机的日期时间(只需更改 Windows 右下方任务栏中的日期和时间),然后执行以下操作:

git commit --amend --date=now
git push

例如,我提交了将日期更改为“04/07/20”的提交。当我运行 git log(使用 --pretty=fuller)时,我可以检查 AuthorDate 和 CommitDate 是我在本地计算机中的:

AuthorDate: Wed Apr 7 12:51:13 2020 -0300
CommitDate: Wed Apr 7 12:51:13 2020 -0300

我的问题是:在通过更改我的本地计算机日期时间进行此提交后,有人可以验证我以某种方式更改了这些日期并查看他们提交的实际真实日期吗? 另外,有人能看到 repo 的创建日期吗?

谢谢

【问题讨论】:

  • 请注意,如果您正在进行取证分析——例如,为了打破某人的不在场证明(“我不可能犯下那起谋杀案,我是在工作中犯下一份文件”)——你可以证明 some 时间戳损坏,例如,提交 P(父)具有时间戳 T,而提交 C(子)具有某个正整数 k 的时间戳 Tk。但是你不知道这里是P还是C错了。顺便说一句:你在-0300 怎么样?在巴西还是阿根廷?格陵兰?

标签: git github gitlab repository


【解决方案1】:

这可能会有所帮助 (source):

作者日期:最初创作提交的时间。通常,当有人第一次运行 git commit 时。

提交日期:提交应用于分支的时间。在许多情况下,它与作者日期相同。有时它会有所不同:如果提交被修改、重新设置或由作者以外的人作为补丁的一部分应用。在这些情况下,日期将是变基发生或应用补丁的日期。

推送日期:提交被推送到相关远程存储库的时间。此日期特定于您正在使用的远程版本控制系统,并且在您的本地存储库中不可用。

如果有人检查了您的推送日期,他们就会知道您是否修改了该日期。然而,从我所见,推送日期不能(容易)从 git 收集。否则,我还没有看到任何人可以看到真实日期。

我发现可以通过查找对存储库的第一次提交来获取存储库的创建日期。也可以使用How to know the creation date of GitHub repository 中建议的技术来查找 repo 的创建日期。 (注意:Github 的网站不显示 repo 的创建日期。)

【讨论】:

    【解决方案2】:

    要更改提交日期,您实际上不必更改计算机的日期。您可以简单地设置GIT_AUTHOR_DATEGIT_COMMITTER_DATE,它们将设置这些值。例外情况是,如果您正在签署您的提交,在这种情况下 GnuPG 将插入当前时间,并且在某些情况下(例如,使用 S/MIME),它可能会嵌入一个外部时间戳。

    假设您没有对提交进行签名,则无法从存储库内容中得知提交的时间。有人可能会使用 GitHub API 来确定何时推送特定修订,但只要您的虚假时间戳在该日期之前,就无法证明它是伪造的。

    正如您在 the REST API documentation 中看到的,GitHub 会记录存储库的创建、更新和推送时间。

    【讨论】:

    • 谢谢!一个问题:如果存储库是私有的,有人可以使用 Github API 来确定这些东西吗?
    • 还有一件事:如何设置 GIT_AUTHOR_DATE 和 GIT_COMMITTER_DATE 变量?
    • 我相信那些对存储库具有读取权限的人可以通过 API 访问这些信息。 GIT_AUTHOR_DATEGIT_COMMITTER_DATE 是环境变量,其有效值记录在 git-commit(1) 手册页中,在 POSIX shell 中,您可以简单地在命令前加上它们:GIT_COMMITTER_DATE=now git commit --amend
    猜你喜欢
    • 2021-10-19
    • 2012-10-13
    • 2014-02-02
    • 2018-12-07
    • 2020-07-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    相关资源
    最近更新 更多