Git查看已删除文件历史记录的方法

 更新时间:2026年04月22日 08:18:46   作者:KieranYin  
文件不见了,第一反应是翻 commit 记录,翻了半天没找到,即使翻到了也很费功夫——其实 git log 就可以解决,所以本文给大家介绍了Git查看已删除文件历史记录的方法,需要的朋友可以参考下

文件不见了,第一反应是翻 commit 记录。翻了半天没找到,即使翻到了也很费功夫——其实 git log 就可以解决。

git log 本质是三件事的组合:在哪个范围内找按什么条件过滤用什么格式输出。把这三块拼对了,几条命令就能定位。

命令结构

git log <branch | --all> [过滤参数] [输出参数] -- <path>

输出较多时,git log 默认用 less 分页显示。j / k 上下滚动(一般终端都支持鼠标滚动),q 退出。

参数说明

范围控制

参数说明
--all遍历所有分支和 tag,兜底用
<branch>只看指定分支,比 --all 干净
A..B只看 B 有、A 没有的提交,适合查当前分支的新增改动

过滤参数

--diff-filter=<字母> :按文件操作类型筛选

含义
A新增
M修改
D删除
R重命名

查删除用 --diff-filter=D,查重命名用 R,两者都不排除的话文件可能只是被移走了。

-S "text" :查某段文本"出现或消失"的提交。不知道文件路径,只记得某段代码时用这个。

-G "regex" :按正则匹配 diff 内容,比 -S 更宽松。

举个例子,如果某次提交把 baseUrl = "http://a.com" 改成了 baseUrl = "http://b.com"-S "baseUrl" 不会命中(因为该字符串总数没变),但 -G "baseUrl" 会命中(因为 diff 里有包含 baseUrl 的改动行)。

输出参数

参数说明
--name-status显示文件名 + 操作状态(A/M/D/R),最常用
--name-only只列文件名,不带状态
--summary显示 delete mode / create mode,直观看结构变化
--full-history不省略 merge 路径,文件被合并覆盖时普通 log 可能查不到

路径限定

-- <path>

-- 后面跟路径,区分参数和文件名,建议始终写上。支持 glob,但不同 shell 行为有差异,用通配符时注意加引号。

** 匹配任意层级目录,记不清文件具体在哪个子目录时很有用:

# 只记得文件在 cdn 目录下某处,不知道完整路径
git log --name-status "**/cdn/**/axios.min.js"

这条命令会匹配所有含 cdn 的路径,比如 src/cdn/v3/axios.min.jsassets/cdn/axios.min.js 都能命中。

常用命令

# 查当前分支是否删过指定文件(文件名模糊匹配)
git log --diff-filter=D --summary -- '*axios.min.js'
# 精确查某个分支的删除记录
git log main --diff-filter=D --summary -- '*axios.min.js'
# 全局查,所有分支上指定文件的删除记录
git log --all --diff-filter=D --summary -- '*axios.min.js'
# 查所有变更类型,判断是删除还是重命名
git log --all --name-status -- '*axios.min.js'
# 只知道代码片段,不知道文件在哪
git log -S "axios" -p --all
# 记得目录名但不知道完整路径,用 ** 匹配任意层级
git log --name-status "**/cdn/**/axios.min.js"
# 找到 commit 后看具体改了什么
git show <commit-id>

排查套路

文件消失了,按这个顺序查:

Step 1:先确认文件有没有出现过

git log --all --name-status -- '*axios.min.js'

Step 2:看输出里的状态标记

D   src/cdn/axios.min.js     # 被删了
R100 src/cdn/axios.min.js → src/lib/axios.min.js  # 被移走了

Step 3:找到 commit,看具体内容

git show <commit-id>

几个容易踩的坑

文件"消失"不一定是被删了,常见情况有三种:被 D 标记删除、被 R 重命名/移目录、被 merge 覆盖(普通 log 看不到,要加 --full-history)。

不要一条条翻 commit。--name-status + --diff-filter + -S 才是正确姿势。

知道文件名就用路径查,不知道路径就用 *filename 通配,连文件都不确定就用 -S 搜代码片段。

到此这篇关于Git查看已删除文件历史记录的方法的文章就介绍到这了,更多相关Git查看已删除文件历史内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • wap开发中如何有效的利用缓存减少消息的传送量

    wap开发中如何有效的利用缓存减少消息的传送量

    由于WAP信道带宽的限制,我们在编写WAP应用的时候都希望最大限度地减少消息的传送量。
    2010-06-06
  • fiddler使用方法之Fiddler显示IP,Fiddler中文乱码解决方法以及fiddler模拟发送get/post请求

    fiddler使用方法之Fiddler显示IP,Fiddler中文乱码解决方法以及fiddler模拟发送get/post

    今天为大家介绍fiddler的3种使用技巧,(1)Fiddler抓包显示域名IP(2)解决Fiddler抓包时中文乱码问题(3)利用fiddler模拟发送get/post请求的方法
    2018-10-10
  • 使用git config --global设置用户名和邮件问题

    使用git config --global设置用户名和邮件问题

    这篇文章主要介绍了使用git config --global设置用户名和邮件问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-05-05
  • Git中代码回退的完全指南

    Git中代码回退的完全指南

    在软件开发过程中,代码回退是一个不可避免的操作,无论是修复错误、撤销不当的更改,还是处理合并冲突,掌握 Git 的回退技巧都能让你的开发工作更加流畅,本文将详细介绍 Git 中各种回退代码的方法,涵盖常见场景和边界情况,并提供实用的操作示例,需要的朋友可以参考下
    2025-08-08
  • Git建立本地仓库并上传到Gitee的详细步骤

    Git建立本地仓库并上传到Gitee的详细步骤

    这篇文章主要介绍了Git建立本地仓库并上传到Gitee,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Git下载与环境变量配置方法

    Git下载与环境变量配置方法

    前几天在写博客 手把手教你用Hexo + github 搭建自己博客的时候,经常需要用到一些git操作,截了好多图,于是就想干脆整理成一系列的git 教程,总结如下,需要的朋友可以参考下
    2017-10-10
  • git stash的正确用法详解

    git stash的正确用法详解

    这篇文章主要为大家介绍了git stash的正确用法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Imagenet2012数据集下载、介绍(推荐)

    Imagenet2012数据集下载、介绍(推荐)

    最近研究可能会用到该数据集,发现过去好多分享的官网下载链接已经失效,找了很久才找到了网盘的数据集,对Imagenet数据集下载需要的朋友跟随小编一起看看吧
    2022-09-09
  • git通过内网代理访问外网的相关配置方法

    git通过内网代理访问外网的相关配置方法

    这篇文章主要介绍了git通过内网代理,访问外网的相关配置,配置git代理以http代理为例,给大家详细讲解,需要的朋友可以参考下
    2023-05-05
  • Visual Studio安装git插件的方法步骤

    Visual Studio安装git插件的方法步骤

    这篇文章主要介绍了Visual Studio安装git插件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-04-04

最新评论