Git for Windows - 防止 .pack 文件日期/时间修改

pep*_*pak 5 windows git metadata pack

我正在使用 Windows 版 Git(版本 2.15,但同样的问题出现在 2.14 中,我认为旧版本也有),并且我注意到一个相当烦人的行为:当我执行一些基本的 git 操作*)时,.git 的修改日期/objects/pack/pack-*.pack 文件更改。文件本身保持不变,但上次修改日期字段已更新,这导致我的备份软件认为文件已更改并需要添加到我的差异备份中。由于我的 .pack 文件相当大,这会显着增加我每日备份的大小。有没有办法阻止这种行为?也就是说,保持包文件完全不变,包括其元数据,直到我执行 git gc 或 git repack?

不幸的是,我无法确定哪个操作导致了这种行为。今天发生这种情况时,我只使用了 git status、git log、git add、git mv 和 git commit,没有使用其他任何东西,并且日期/时间发生了更改,但是当我尝试在昨天的备份上复制该行为时,日期更改并没有不会发生。我想下次我将运行进程监视器并监视对文件的访问,但与此同时,有人知道可能导致此问题的原因吗?谢谢。

Edw*_*son 1

如果您尝试禁用此功能,那么您很容易会发现一些微妙的错误,其中仍在使用的对象将从您的存储库中消失。

您很难确定确切的操作,因为每个添加文件的操作都会执行此操作。

这是非常有意的 - Git 刷新数据库中对象的时间戳(更新松散对象或包文件上的时间戳)以了解对象上次写入的时间。每当您创建新的提交时,它都会更新包含引用的对象的所有文件的时间戳。

这很重要,因为它有助于删除数据(如修剪)的工具避免竞争条件:对象可能会被取消引用,然后重新引用。Prune 还会查看时间戳,因此通过触摸文件,它将不符合垃圾回收的条件。