You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Git恢复文件时保留文件时间戳——无需git-restore-mtime

使用Git原生命令恢复文件并还原历史时间戳

Git本身没有单一参数直接完成「恢复文件+同步历史时间戳」的操作,但可以通过组合Git命令和系统原生命令实现,无需第三方工具。具体步骤如下:

1. 恢复文件到指定历史版本

先通过git log --oneline <file-path>查看目标文件的提交记录,找到对应版本的提交哈希值,然后用Git检出该版本的文件:

git checkout <commit-hash> -- <file-path>
  • 替换<commit-hash>为目标版本的提交哈希(短哈希即可),<file-path>为文件的相对/绝对路径。
  • 若要恢复到当前分支的上一个版本,可简写为git checkout HEAD~1 -- <file-path>。

2. 获取该版本的提交时间

用Git提取对应提交的标准格式时间戳:

git log -1 --format="%ai" <commit-hash> -- <file-path>

执行后会输出类似2024-05-20 14:30:00 +0800的时间字符串,这就是该文件对应版本的提交时间。

3. 同步文件系统时间戳

根据操作系统,用系统命令将上述提交时间设置为文件的修改时间:

Linux/macOS 系统

使用touch命令:

touch -d "$(git log -1 --format="%ai" <commit-hash> -- <file-path>)" <file-path>

Windows 系统(PowerShell)

通过修改文件属性实现:

(Get-Item "<file-path>").LastWriteTime = (git log -1 --format="%ai" <commit-hash> -- <file-path>)

注意事项

  • 批量处理多个文件时,可编写Shell/PowerShell脚本循环执行上述步骤。
  • 若出现时区不匹配问题,可将%ai替换为%ad并添加--date=local参数,输出本地时区时间。
  • 检出文件后若需保留当前分支状态,建议在临时分支操作,避免误提交时间戳修改。

内容的提问来源于stack exchange,提问作者Jackson Eckermann

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 23:47:07