git diff 常用命令

git diff 是 Git 中查看文件**差异(diff)**的核心命令,用于比较 工作区、暂存区、版本库(commit/分支) 之间的文件变化。

一、基本对比(最常用)

1. 工作区 ↔ 暂存区(未add的修改)

查看已修改但未暂存的内容(git add 之前):

git diff
2. 暂存区 ↔ 最新提交(已add未commit)

查看已暂存但未提交的内容(git add 之后、git commit 之前):

git diff --staged   # 或 --cached(效果一样)
3. 工作区 ↔ 最新提交(所有未提交改动)

查看所有本地变更(未暂存 + 已暂存):

git diff HEAD

二、对比历史版本 / 分支

1. 对比两个提交(commit)
git diff <commit1> <commit2>   # commit2 相对于 commit1 的改动
git diff HEAD~2 HEAD           # 对比当前与前前一次提交
git diff abc123 def456         # 用哈希值对比
2. 对比两个分支
git diff main dev              # dev 相对于 main 的差异
git diff main..dev             # 同上
git diff main...dev            # 对比两分支最近公共祖先到各自最新(合并常用)
3. 对比当前与远程分支
git diff origin/main           # 本地与远程 main 的差异

三、指定文件/目录

在命令末尾加路径,只看某个文件/文件夹:

git diff -- src/main.c         # 工作区 vs 暂存区(仅该文件)
git diff --staged -- README.md # 暂存区 vs HEAD(仅该文件)
git diff HEAD~2 HEAD -- src/   # 对比两次提交的 src/ 目录

四、常用输出选项(美化/精简)

  • 精简统计(文件列表 + 增删行数)
    git diff --stat
    
  • 只看文件名
    git diff --name-only
    
  • 单词级高亮(适合小修改)
    git diff --word-diff
    
  • 忽略空格(格式化不影响逻辑时)
    git diff -w   # 忽略所有空格变化
    git diff -b   # 忽略行尾空格
    
  • 显示更多上下文
    git diff -U5  # 显示5行上下文(默认3行)
    

五、输出说明(看懂 diff)

diff --git a/file.txt b/file.txt
index 1234567..890abc1 100644
--- a/file.txt
+++ b/file.txt
@@ -1,3 +1,4 @@
 第一行(不变)
-第二行(被删除)
+第二行(新增内容)
+第三行(新行)
  • -:旧版本删除的行
  • +:新版本新增的行
  • @@:行号范围

六、常见场景速查表

命令作用
git diff工作区 ↔ 暂存区(未add)
git diff --staged暂存区 ↔ HEAD(已add未commit)
git diff HEAD工作区 ↔ 最新提交(全部未提交)
git diff HEAD^ HEAD上一次提交 ↔ 当前
git diff main dev分支 main ↔ dev
git diff --stat只看修改统计
git diff -- file.js只看 file.js
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

极地星光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值