添加文件同时保留修改时间

问题描述 投票:0回答:1

我有一个 2020 年的旧源代码存档 (

tar.gz
)。我决定在 git 中检查它以开始增量修改。但我想要的是,在我的初始提交中,文件应该具有提取
ls -ltr
时得到的原始修改时间戳(如
tar.gz
中所示)。通过这样做,我想给后来浏览该存储库的任何人留下一条消息,表明原始文件来自 2020 年。

但是当我将文件添加到 git、提交并更改分支并再次切换回原始分支时,文件修改时间(如

ls -ltr
中)更改为提交时间戳。

有没有办法在第一次提交时保留原始修改时间?

git
1个回答
0
投票

当 Git 签出文件时,它不会明确设置修改时间。需要更新的文件将使用默认时间戳进行更新,不需要更新的文件将保持不变。此功能使像 Make 这样的工具能够正常工作并且不可配置。

如果您想设置特定权限、所有权或时间戳等内容,那么执行此操作的工具称为

mtree
。这是一个 BSD 实用程序(在 Debian 中以
mtree-netbsd
的形式提供),您可以使用它根据树的当前状态创建带有某些标签的清单。然后,您可以
mtree -U
使用同一清单,稍后修改文件的所有者、组和权限。

请注意,您需要对内容进行一些小的编辑,以排除诸如

.git
目录之类的内容,您不想包含这些内容。如果您首先使用
mtree -C -f MANIFEST
转换清单,这会更容易做到,这会将其设置为每行一个文件的格式。

© www.soinside.com 2019 - 2024. All rights reserved.