Git结账-如何在切换分支机构时维护时间戳?

人气:47 发布:2023-01-03 标签: git rsync

问题描述

我经常在分支机构之间来回切换。我有一个脚本,它将结账的内容推到一个"运行"的环境中,在那里我可以看到代码运行并对其进行测试(这是一个Web应用程序)。这个推送脚本的核心是rsync,它使用时间戳来检测真正应该传输哪些文件。因为‘git-check out’似乎会将文件上的时间戳设置为当前时间,所以rsync报告正在向上推送所有文件,这只是因为时间戳将被更新。

如何在分支之间切换时让"git-check out"保留时间戳,以便rsync仅报告内容更改?

我不想使用rsync的校验和参数,因为它非常慢。

推荐答案

git checkout更新时间戳的原因是,几乎所有针对源代码的构建系统都依赖时间戳来确定是否需要重新构建目标。如果git checkout在更新文件时没有更新文件上的时间戳,这些构建系统将不会正确地执行增量构建。事实上,git checkout应该只更新已更改文件的时间戳。

rsync应该能够高效地更新时间戳,如果只有元数据发生了更改,则不会传输任何数据。您可以使用&Quot;加速来验证这一点。您还可以要求rsync的最新版本使用-i标志逐项列出更改。您可以通过省略-a-t来告诉rsync不要使用时间戳(并且只使用校验和),但rsync(1)手册页不建议这样做。

12