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

Written by

in

文章目录
  • git log <branch | –all> [过滤参数] [输出参数] — <path> 输出较多时,git log 默认用 less 分页显示。j / k 上下滚动(一般终端都支持鼠标滚动),q 退出。
  • # 查当前分支是否删过指定文件(文件名模糊匹配) 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查看已删除文件历史内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: Git中查看文件的变更历史的常用命令详解 Git的基础文件操作初始化查看添加提交示例教程 解决IDEA 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查看已删除文件历史内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!

          您可能感兴趣的文章:

          • Git中查看文件的变更历史的常用命令详解
          • Git的基础文件操作初始化查看添加提交示例教程
          • 解决IDEA GIT记录无法查看提交文件的问题

          站内搜索