如何在Git首次提交时保留文件原始修改时间?
如何让Git保留文件的原始修改时间
Git本身不存储文件的修改时间戳——工作区里的文件时间,默认是你检出代码时的系统时间。但要实现你要的效果(让首次提交的文件保持2020年的原始修改时间),可以用下面两种方法:
方法一:用Git自带的restore命令(Git 2.23+可用)
首先,提交代码时把提交时间设为2020年(和原始文件时间匹配):
# 先add所有文件后,用这个命令提交,强制设置提交时间为2020年的某个时间 GIT_COMMITTER_DATE="2020-12-31 23:59:59" git commit --date="2020-12-31 23:59:59"
之后每次切换分支或检出代码后,执行这条命令让Git把文件修改时间同步到对应提交的时间:
git restore --worktree --touch .
它会遍历当前目录下所有文件,把它们的修改时间改成该文件最后一次提交的时间——也就是你之前设的2020年,这样ls -ltr就能看到原始时间了。
方法二:用第三方工具git-restore-mtime
这是个专门做这件事的脚本,不需要手动设置提交时间,它会直接从Git历史里提取每个文件最后一次修改的提交时间,然后同步到文件系统:
- 先安装工具(比如用包管理器:
brew install git-restore-mtime,或者从源码下载编译) - 进入仓库根目录,直接运行:
git restore-mtime
它会自动处理所有文件,把时间改成对应提交的时间,你的2020年源码文件自然就显示当年的时间了。
重要提醒
不管用哪种方法,这些修改只在本地工作区生效——Git仓库本身不会存储时间信息。其他人克隆仓库后,也要执行同样的操作才能看到原始时间。如果之后修改了文件,新的提交会更新该文件的时间,这是正常的Git行为。
内容的提问来源于stack exchange,提问作者nightlytrails
相关产品推荐
相关产品推荐

