如何查清文件是什么时候、被谁删除的

定位文件的删除提交:git log --diff-filter=D --format 带作者日期 -- <路径>,最后一条就是删除提交;git show <哈希> 看删除现场(改了哪些文件、提交信息)。配合 git blame 其父提交可追溯此前每行的来历。

最佳实践
Git 分支协作与合并示意

用 git log --diff-filter=D 过滤出该文件的删除提交,并带上作者和日期:

git log --diff-filter=D --format='%h | %an | %ad | %s' --date=iso -- path/to/file

输出里那条"删除"记录就是案发时间线:哈希 | 作者 | 日期 | 提交说明。

查看删除现场

git show <哈希>              # 这次提交的完整 diff 和说明
git show <哈希> --stat       # 只看文件清单

追溯删除前的最后内容

git show <删除提交>^:path/to/file          # 文件最后的完整内容
git blame <删除提交>^ -- path/to/file      # 每一行最后是谁改的

blame 锁定到删除前的父提交(^),能看到文件"生前"每一行的作者——做代码考古和事故复盘时的利器。

反向恢复

git restore --source=<删除提交>^ -- path/to/file   # 恢复内容
# 或 revert 整个删除提交(它还动了别的文件时更合适)
git revert <删除提交>

常见问题(FAQ)

Q:提交说明没写清楚为什么删,怎么查上下文?

git show <哈希> 看同批删了什么;提交哈希去 GitHub/CI 上查关联的 PR/MR,评审讨论里通常有原因。

Q:文件可能是改名而不是删除?

git log --follow --name-status -- 路径 观察是否有 R(rename)记录——R100 旧名 新名 说明只是搬家。

Q:能按时间范围过滤吗?

git log --diff-filter=D --since="2026-06-01" --until="2026-09-01" -- 路径,缩小考古范围。

参考资料

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台