主题
  • 默认模式
  • 浅蓝色模式
  • 淡绿色模式
  • 深夜模式

Git Diff 命令

Git 基本操作


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'

Git 基本操作



评论区 0
发表评论