git show rev:path 是什么
git show <版本>:<路径> 直接输出指定提交里某个文件的内容,不需要切换分支或检出工作区。它是核对「某个版本当时这个文件长什么样」的最快方式:可重定向到临时文件与当前版本对比,也可以用两个版本的形式直接比较差异。路径按仓库根目录解析,与当前所在子目录无关,这一点在多层目录里尤其要注意。
基本信息
| 语法 | git show <版本>:<路径> |
|---|---|
| 路径基准 | 相对仓库根目录 |
| 变体 | git diff rev1:path rev2:path 直接比较两版本 |
| 常用场景 | 核对历史文件内容、导出旧版本 |
| 平台 | 任意 Git 客户端 |
典型使用场景
- 核对某个标签下配置文件当时的内容
- 导出旧版本的依赖清单,与当前版本对比
- 排查线上问题时确认某个版本的行为定义
- 评审时查看分支上该文件的最终形态
- 对比两次发布之间某文件的差异
- 找回被误删文件在被删前的最后内容
常用示例
常用示例
git show HEAD:src/config.yml # 查看当前提交里的文件
git show v1.2.0:package.json > /tmp/old-package.json
git diff main:file.txt feature:file.txt # 直接比较两个版本
git show HEAD:src/app.py | head -30 # 只看开头部分相关写法
| 写法 | 作用 |
|---|---|
| show <版本>:<路径> | 输出该版本中文件内容 |
| show <版本> | 输出该提交的改动与信息 |
| diff A:path B:path | 比较两版本中的同一文件 |
核对「某版本当时这个文件是什么样」时一条命令即可,无需检出,也不会影响当前工作区的状态。
路径按仓库根解析,若在子目录里操作要写全相对根目录的路径;Windows 上路径建议用正斜杠,避免盘符冒号与版本号冒号混淆。
想批量导出旧版本的文件树时,可以配合 git archive 指定版本与路径打包,比逐个 show 更省事,适合做发布快照。