我使用 post-commit 脚本将“git archive”到临时目录,然后我使用 Rsync 将更改的文件移动到我的 dev 工作目录。我正在使用 rsync 保留时间戳,但是 git archive 命令将所有时间戳更新为当前日期和时间,所以一切都被推送了。根据文档(引用如下),只有在我传递树 ID 而不是提交 ID 时才应该这样做。我没有通过任何东西。
我要复制到 temp 的 git archive 命令:
git archive $branch | (cd $tempdir; tar x)
这是文档中的内容:
“git存档在给定树ID与给定提交ID或标签ID时的行为不同。在第一种情况下,当前时间用作存档中每个文件的修改时间。在后一种情况下,提交时间记录在使用引用的提交对象。此外,如果使用 tar 格式,则提交 ID 存储在全局扩展 pax 标头中;可以使用 git get-tar-commit-id 提取它。在 ZIP 文件中,它存储为文件评论。”
这是否意味着我需要获取提交 ID 并将其传递给 git 存档?我怎么做?
我有点困惑?如何在不更改时间戳的情况下存档到我的临时目录?
谢谢。
编辑:我也试过这些无济于事:
git archive get-tar-commit-id $branch | (cd $tempdir; tar x)
和
git archive $(git get-tar-commit-id) $branch | (cd $tempdir; tar x)
我不确定正确的语法是什么。也许这比我想象的要容易?