What's an easy way to detect modified files in a Git workspace?
If you just want a plain “Are there any differences from HEAD?”:
git diff-index --quiet HEAD
If the exit code is 0, then there were no differences.
If you want “What files have changed from HEAD?”:
git diff-index --name-only HEAD
If you want “What files have changed from HEAD, and in what ways have they changed (added, deleted, changed)?”:
git diff-index --name-status HEAD
Add -M
(and -C
) if you want rename (and copy) detection.
These commands will check both the staged contents (what is in the index) and the files in the working tree. Alternatives like git ls-files -m
will only check the working tree against the index (i.e. they will disregard any staged (but uncommitted) content that is also in the working tree).
From git help -a
:
git ls-files -m
git status --porcelain
seems to give a nice parsable output.