【问题标题】:git getting a consistent time stamp across machinesgit 在机器上获得一致的时间戳
【发布时间】:2022-10-09 09:14:54
【问题描述】:

我正在尝试从 git 获取文件的创建和修改时间戳

目前我正在使用

# get creation date (date file was first checked into git)
git log --format="%cd" --date=unix --diff-filter=A path/to/file

# get modified data (last time file was commited to git)
git log --format="%cd" --date=unix --max-count=1 path/to/file

但是,我在 CI 与本地的时间不同。

当地的时间是

1640113243
1664468001

但在 CI 上它们是

1664476473
1664476473

它们不应该相同(文件是在上次修改前几个月创建的)并且它们需要匹配本地结果

知道我做错了什么或如何以本地和 CI 上的日期匹配的方式获取此信息吗?

【问题讨论】:

  • 两个仓库/分支中涉及的提交(文件的创建,文件的最后修改)是否相同?
  • 打印提交哈希作为输出的一部分,并检查您是否正在查看正确的提交。

标签: git


【解决方案1】:

在查看 repo 时,问题显然只得到了 1 的深度。将其设置为获取整个历史记录可以修复它。 CI 上的新日期是

1640113243
1664468001

获取整个历史似乎有点浪费。有什么优化吗?


更新:显然您可以签出一个仅获取历史记录而不是实际文件数据的存储库

https://stackoverflow.com/a/60952814/128511

【讨论】:

  • 如果您正在查询历史记录(并且您使用的是git log),那么您必须有历史记录。没有办法解决它。
  • @knittl,理论上可以只获取元数据而不需要获取文件的实际内容。我不是说 git 支持该选项,不知道,但理论上可以只获取日志信息本身作为优化。
  • 但是日志是由提交定义的,而提交是由它们的元数据和树定义的。树是由它们的文件名和文件内容定义的。
猜你喜欢
  • 2015-08-28
  • 2012-10-30
  • 2022-12-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-02
  • 2019-06-19
  • 1970-01-01
相关资源
最近更新 更多