According to the end of diff_no_index(), /* * The return code for --no-index imitates diff(1): * 0 = no changes, 1 = changes, else error */ return diff_result_code(&revs->diffopt, 0); However, this is not properly documented in git-diff.txt. Shamelessly steal from the `--exit-code` text and give it to the `--no-index` documentation to explain that the return code is similar to diff(1). Signed-off-by: Denton Liu <liu.denton@xxxxxxxxx> --- Documentation/git-diff.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt index 72179d993c..1e363bd200 100644 --- a/Documentation/git-diff.txt +++ b/Documentation/git-diff.txt @@ -36,7 +36,10 @@ two blob objects, or changes between two files on disk. running the command in a working tree controlled by Git and at least one of the paths points outside the working tree, or when running the command outside a working tree - controlled by Git. + controlled by Git. With `--no-index`, + the program exits with codes similar to diff(1). That is, it + exits with 1 if there were differences and 0 means no + differences. 'git diff' [<options>] --cached [<commit>] [--] [<path>...]:: -- 2.24.0.rc0.197.g0926ab8072