Git Diff 命令
git diff
命令是 Git 中最核心的差异分析工具,几乎贯穿整个开发生命周期。
git diff
命令用于显示工作目录、暂存区和仓库历史记录之间的更改。
✅ 在深入git diff
之前,我们需要理解 Git 的三个重要概念:Git 工作区、暂存区和版本库。
- 工作区:即工作目录,你在编辑器中直接修改的文件
- 暂存区:通过
git add
暂存的变更 - 版本库:即本地仓库,用于保存已提交的代码版本
基本比较命令
✅ 比较工作目录和暂存区的差异(未暂存的变更):
git diff
✅ 比较暂存区和最后一次提交的差异(已暂存的变更):
git diff --cached
# 或
git diff --staged
✅ 比较工作目录和最后一次提交的差异(所有变更):
git diff HEAD
提交历史比较
✅ 比较两次提交:
# 比较两个特定提交之间的差异
git diff commit1 commit2
# 简写形式(两点语法)
git diff commit1..commit2
✅ 分支比较:
# 比较当前分支与 master 分支的差异
git diff master
# 比较两个分支的差异
git diff branch1 branch2
# 三点语法:比较共同祖先到指定提交的差异
git diff branch1...branch2
✅ 时间旅行比较:
# 比较当前与3次提交前的差异
git diff HEAD~3
# 比较上周至今的变更
git diff @{1.week.ago}
精准文件对比
✅ 指定文件或目录:
# 比较特定文件的差异
git diff -- path/to/file.js
# 比较目录差异
git diff -- src/components/
# 使用通配符
git diff -- '*.js'
✅ 比较不同版本的文件:
# 比较当前与v1.0标签的main.js差异
git diff v1.0 -- src/main.js
# 比较两个版本间的配置文件变化
git diff v1.0 v2.0 -- config.yml
高级差异分析
✅ 差异统计与摘要:
# 显示变更统计
git diff --stat
# 显示更详细的统计(增删行数)
git diff --numstat
# 仅显示摘要
git diff --shortstat
✅ 变更可视化:
# 单词级别差异(适合文档变更)
git diff --word-diff
# 显示函数上下文
git diff --function-context
# 彩色输出
git diff --color
✅ 忽略无关变更:
# 忽略空格变化
git diff --ignore-space-change
# 忽略所有空格差异
git diff --ignore-all-space
# 忽略行尾空格
git diff --ignore-space-at-eol
代码提交前的自审
✅ 提交前系统检查自己的修改:
# 检查是否有调试代码残留
git diff --cached | grep "console.log"
# 检查是否意外修改了配置文件
git diff --stat --cached | grep "config/"
# 检查空格变更(避免无关修改)
git diff --check # 检查空格错误
git diff --cached --check # 检查暂存区空格
分支合并前的差异分析
✅ 合并分支前了解变更范围:
# 比较当前分支与目标分支的差异
git diff master...feature # 推荐三点语法
# 显示统计摘要
git diff --stat master...feature
# 只比较特定目录
git diff master...feature -- src/
# 检查API接口变化
git diff master...feature -- '*.h' '*.ts'
评论区 0
发表评论
教程介绍
Git 是一个分布式版本控制系统,用于高效管理文件的修改历史,支持多人协作开发。
37
章节
57
阅读
0
评论
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈