Hi Johannes, Thanks a lot for the clarification! Regards, Oussama On 5/22/19 4:54 PM, Johannes Schindelin wrote: > Hi Oussama, > > On Wed, 22 May 2019, Oussama Ghorbel wrote: > >> 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.