【Git】git diff 命令使用介绍

git diff 是 Git 中用于比较差异的核心命令,它能显示工作目录、暂存区(索引)和提交之间的文件变化。以下是其详细用法和常见场景:


基本用法

1. 工作目录 vs 暂存区
git diff
  • 显示已修改但未暂存的变更(即工作目录与暂存区的差异)。
  • 红色 - 表示删除的行,绿色 + 表示新增的行。
2. 暂存区 vs 最新提交(HEAD)
git diff --staged  # 或 git diff --cached
  • 显示已暂存但未提交的变更(即暂存区与最后一次提交的差异)。
3. 工作目录 vs 最新提交(HEAD)
git diff HEAD
  • 显示所有未提交的变更(包括未暂存 + 已暂存的变更)。

比较历史提交

1. 比较两个提交
git diff <commit1> <commit2>
  • 比较两个提交的差异(例如 git diff abc123 def456)。
2. 比较分支
git diff branch1..branch2  # 等价于 git diff branch1 branch2
  • 比较两个分支最新提交的差异(例如 git diff main..feature)。
3. 与祖先提交比较
git diff HEAD^ HEAD      # 比较 HEAD 与其父提交
git diff HEAD~2 HEAD    # 比较 HEAD 前第2个祖先与当前提交

高级用法

1. 比较特定文件
git diff -- <file-path>          # 工作目录 vs 暂存区
git diff HEAD -- <file-path>     # 工作目录 vs HEAD
git diff commit1 -- <file-path>  # 指定提交的文件
2. 查看单词级差异(非整行)
git diff --word-diff
  • 显示单词级修改(例如 The [-old-]{+new+} word)。
3. 统计变更(不显示具体内容)
git diff --stat
  • 输出简略统计(例如 file.txt | 2 +-)。
4. 忽略空白字符变更
git diff -w  # 忽略空格/制表符
git diff -b  # 忽略行尾空格

常见场景示例

场景命令
查看未暂存的修改git diff
查看已暂存的修改git diff --staged
比较工作目录与 main 分支git diff main
比较两次提交的 README.mdgit diff abc123 def456 -- README.md
查看最近两次提交的差异git diff HEAD~1 HEAD

输出解读

diff --git a/file.txt b/file.txt  # 比较的文件路径
index 789abcd..1234567 100644     # 文件哈希值与模式
--- a/file.txt                    # 修改前版本(a/)
+++ b/file.txt                    # 修改后版本(b/)
@@ -1,3 +1,3 @@                   # 修改位置(旧文件第1行起3行 → 新文件第1行起3行)
 Hello World
-This is old text.                # 删除的行(红色)
+This is new text!                # 新增的行(绿色)
 End

注意事项

  • 默认输出可能较长,可按 q 退出分页查看(如果配置了分页器)。
  • 使用 git difftool 可用图形化工具(如 Beyond Compare)查看差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

晴雨日记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值