git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: strange behavior of git diff-index

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
May 22, 2019, 14:54 UTC
Message-ID
<nycvar.QRO.7.76.6.1905221651270.46@tvgsbejvaqbjf.bet>
In-Reply-To
<VI1PR08MB3454100258C23CB1F2B709F5EB000@VI1PR08MB3454.eurprd08.prod.outlook.com>
Hi Oussama,
On Wed, 22 May 2019, Oussama Ghorbel wrote:
Show 11 quoted lines
> git diff-index is giving me incorrect information, however if I run git diff, then git diff-index again it will show the correct information.
> The steps are the following:
> $ git diff-index --name-only HEAD
> git appears to list all files in the project irrespective if they modified or not
> $ git diff
> $ git diff --cached
> will show nothing. So I don't have any modification. 
> Now strangely if I run git diff-index, it will also show nothing which is correction behavior.
>
> my git version is 2.7.4
> Any explanation?

The low-level `diff-index` command is meant to be used in scripts, and does specifically *not* refresh the index before running. Meaning that it could possibly mistake a file for being modified even if it is not modified, just because it is marked "modified" in the index [*1*].

Short answer: use the high-level command `git diff` that is intended for human consumption.

Ciao, Johannes

Footnote *1*: It is actually a bit more complicated than that: the index stores metadata such as mtime, size, uid, etc, and compares that to the metadata on disk. If there is any mismatch, or if everything matches but the mtime *also* matches the index file's itself, the file is considered not up to date, i.e. marked as modified.

Previous: Oussama GhorbelNext: Oussama Ghorbel
Message 2 of 3 in “strange behavior of git diff-index”
  1. Oussama GhorbelMay 22, 2019
  2. Johannes SchindelinMay 22, 2019
  3. Oussama GhorbelMay 22, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.