Git 查看 Commit 修改文件概要的常用命令与技巧
在日常 Git 版本管理中,经常需要查询某个 Commit 修改了哪些文件,甚至每个文件的增删行数统计,本文整理了多种实用方法,覆盖不同使用场景,满足从「简洁文件列表」到「详细行数统计」的各类需求。
一、前置准备:获取 Commit ID
所有操作都需要先获取目标 Commit 的 commit-id,commit-id 是一串 40 位的哈希值,Git 支持简写前 6-8 位使用,获取方式如下:
# 简洁格式查看提交历史(优先推荐,输出包含 简写 commit-id + 提交说明)
git log --oneline
# 完整格式查看提交历史(包含完整 commit-id、作者、时间、提交说明)
git log
便捷替代标识(无需手动复制 Commit ID)
对于最近的提交,可直接使用以下标识替代 commit-id,提升操作效率:
HEAD:指向当前分支最新的一次提交HEAD^/HEAD~1:指向最新提交的上一次提交HEAD~2:指向最新提交的上两次提交(以此类推,~N表示上 N 次提交)
二、场景 1:仅查看「修改的文件列表」(无具体内容/统计)
适用于只需要知道「哪些文件被修改」,不需要额外信息的场景,输出干净无冗余。
方法 1:git diff-tree(精准纯净,优先推荐)
专门为「仅列出修改文件」设计,支持递归遍历子目录,可选显示文件修改状态。
# 基础用法:仅输出修改文件的路径/名称(最简洁)
git diff-tree -r --name-only <commit-id>
# 进阶用法:输出文件路径 + 修改状态(A=新增、M=修改、D=删除)
git diff-tree -r --name-status <commit-id>
参数说明
-r:递归遍历子目录,确保列出所有修改文件(不加仅显示被修改的目录,不显示目录内具体文件)--name-only:仅保留文件名称/路径,无其他额外信息--name-status:在文件路径前添加修改状态标识,快速区分文件变更类型
示例输出(–name-status)
M src/utils/login.js A src/pages/Profile.vue D src/assets/old-logo.png
方法 2:git log(附带 Commit 基本信息,一步到位)
在查看文件列表的同时,保留 Commit 的作者、时间、提交说明,无需单独获取 commit-id。
# 查看单个 Commit 的文件列表(-1 表示仅显示 1 个 Commit 的信息)
git log -1 --name-only <commit-id>
# 查看单个 Commit 的文件列表 + 修改状态
git log -1 --name-status <commit-id>
# 拓展:查看最近 3 个 Commit 的文件列表 + 修改状态(将 -1 改为 -N 即可查看最近 N 个)
git -3 --name-status


