使用Git提交记录中的文件更改时间来修改文件的更改时间

在今天更新文章的时候,实验性的使用了按照更新时间排序,却发现所有文章的更新时间都是当天,推测是因为读取了文件的更新时间,而文件更新时间由于仓库刚刚新拉取而通通保持了当期时间,所以有了标题所示的需求。

以下操作环境均为Linux系统

首先需要对git做设置

1
2
# 中文目录处理
git config core.quotepath false;

然后直接上脚本

1
2
3
4
5
# 获取 git 仓库中所有文件的最新修改时间并应用在文件上
git ls-tree -r --name-only HEAD | while read filename; do
echo $filename;
touch -t "$(date -d "$(git log -1 --pretty=format:"%aI" "$filename")" "+%Y%m%d%H%M.%S")" "$filename";
done

欢迎关注我的其它发布渠道