有人可以检查我更改了 git 提交的日期吗?

Can someone check I changed the date of git commits?

我在 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

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

谢谢

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

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

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

这可能有帮助 (source):

Author date: when a commit was originally authored. Typically, when someone first ran git commit.

Commit date: when a commit was applied to the branch. In many cases it is the same as the author date. Sometimes it differs: if a commit was amended, rebased, or applied by someone other than the author as part of a patch. In those cases, the date will be when the rebase happened or the patch was applied.

Push date: when a commit was pushed to the remote repository in question. This date is specific to the remote version control system you are using, and won't be available in your local repository.

如果有人检查了你的推送日期,他们就会知道你是否修改了数据。然而,据我所见,无法(轻松)从 git 收集推送日期。否则,我还没有看到任何人看到真实日期的方法。

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