你好,你可以 登入 weibo, github, 或 注册 成为我们的会员,来为大家分享.

git - Checking out old file WITH original create/modified timestamps - Stack Overflow (0)

git clone 的时候,恢复文件的实际最后修改时间。

https://stackoverflow.com/questions/2458042/restore-a-files-modification-time-in-git

https://stackoverflow.com/questions/21735435/git-clone-changes-file-modification-time/21735986

https://gist.github.com/HackingGate/9e8169c7645b074b2f40c959ca20d738

思路是从 Git history 中拿到文件的最后修改时间,用 touch -t 修改,在 GitHub actions 中使用的时候,需要设定 depth 为 0,参考 这里

Fetch all history for all tags and branches:

- uses: actions/checkout@v2
  with:
    fetch-depth: 0

REF https://stackoverflow.com/questions/2179722/checking-out-old-file-with-original-create-modified-timestamps/2179876#2179876

分享人 admin @ 2021-06-14 19:24:36

我也说两句:

登录以分享
# git ls-files -z | xargs -0 -n1 -I{} -- git log -1 --format="%ai {}" {} | perl -ne 'chomp;next if(/'"'"'/);($d,$f)=(/(^\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d(?: \+\d\d\d\d|)) (.*)/);print "d=$d f=$f\n"; `touch -d "$d" '"'"'$f'"'"'`;'