Home Explore Blog CI



git

1st chunk of `Documentation/git-diff-index.adoc`
3ca56475b07fd44430c87bc83bf272e83e720ca7e05b5147000000010000096c
git-diff-index(1)
=================

NAME
----
git-diff-index - Compare a tree to the working tree or index


SYNOPSIS
--------
[verse]
'git diff-index' [-m] [--cached] [--merge-base] [<common-diff-options>] <tree-ish> [<path>...]

DESCRIPTION
-----------
Compare the content and mode of the blobs found in a tree object
with the corresponding tracked files in the working tree, or with the
corresponding paths in the index.  When <path> arguments are present,
compare only paths matching those patterns.  Otherwise all tracked
files are compared.

OPTIONS
-------
include::diff-options.adoc[]

<tree-ish>::
	The id of a tree object to diff against.

--cached::
	Do not consider the on-disk file at all.

--merge-base::
	Instead of comparing <tree-ish> directly, use the merge base
	between <tree-ish> and HEAD instead.  <tree-ish> must be a
	commit.

-m::
	By default, files recorded in the index but not checked
	out are reported as deleted.  This flag makes
	'git diff-index' say that all non-checked-out files are up
	to date.

include::diff-format.adoc[]

OPERATING MODES
---------------
You can choose whether you want to trust the index file entirely
(using the `--cached` flag) or ask the diff logic to show any files
that don't match the stat state as being "tentatively changed".  Both
of these operations are very useful indeed.

CACHED MODE
-----------
If `--cached` is specified, it allows you to ask:

	show me the differences between HEAD and the current index
	contents (the ones I'd write using 'git write-tree')

For example, let's say that you have worked on your working directory, updated
some files in the index and are ready to commit. You want to see exactly
*what* you are going to commit, without having to write a new tree
object and compare it that way, and to do that, you just do

	git diff-index --cached HEAD

Example: let's say I had renamed `commit.c` to `git-commit.c`, and I had
done an `update-index` to make that effective in the index file.
`git diff-files` wouldn't show anything at all, since the index file
matches my working directory. But doing a 'git diff-index' does:

  torvalds@ppc970:~/git> git diff-index --cached HEAD
  :100644 000000 4161aecc6700a2eb579e842af0b7f22b98443f74 0000000000000000000000000000000000000000 D	commit.c
  :000000 100644 0000000000000000000000000000000000000000 4161aecc6700a2eb579e842af0b7f22b98443f74 A	git-commit.c

You can see easily

Title: Git Diff Index
Summary
The git diff-index command compares a tree object to the working tree or index, showing differences in content and mode of blobs, with options to consider or ignore on-disk files and filter results by path patterns.