>> >> >> Reference << << << <<<<<<Ref>>>>>>
diff-index
Modified: 2025-12-31 | Author:ljf12825

简单来说,git diff-index是一个用于比较Git索引(暂存区)与某个特定提交(或树对象)之间的低级别命令

基本语法

git diff-index [<选项>] <commit> [--] [<路径>...]

示例

  1. 比较暂存区与最后一次提交(HEAD) 这是最常用的场景,它可以告诉你哪些修改已经被git add到了暂存区
git diff-index HEAD 

输出示例

:100644 100644 7898192... 0623b42... M      README.md
:100644 100644 6be6f5a... 8da6b8a... M      src/main.py
:000000 100644 0000000... e69de29... A      new_file.txt

输出遵循git diff-index的格式,每一行代表一个文件的变更

  1. 更友好的输出(使用--patch-p) 默认的输出信息量很大但不直观。可以让它输出像git diff那样的补丁格式
git diff-index -p HEAD 

输出示例

diff --git a/README.md b/README.md
index 7898192..0623b42 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,2 @@
 # My Project
+This is a new line added to the README.

这样就能清晰地看到每个文件具体修改了什么内容,和git diff --cached的输出非常相似

相关命令对比

命令比较双方主要用途
git diff-index HEAD索引(暂存区)vs 最后一次提交(HEAD查看以暂存的更改(准备提交的更改)
git diff(无参数)工作区 vs 索引查看未暂存的更改(还没有git add的更改)
git diff --cached(或git diff --staged索引 vs HEAD查看所有更改的总和(包括已暂存和未暂存的)
git diff HEAD工作区 vs HEAD查看所有更改的总和(包括已暂存和未暂存)
git status-给出一个概括性的、人类可读的变更总结,告诉你哪些文件被修改、已暂存或未跟踪

git diff-index HEAD 在功能上等同于git diff --cached