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.