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

Re: git-diff: --ignore-matching-lines has no effect on the output when --name-only is used

From
Junio C Hamano <gitster@pobox.com>
Date
Jul 23, 2025, 17:09 UTC
Message-ID
<xmqqqzy6omul.fsf@gitster.g>
In-Reply-To
<12095AC3-BC38-48DB-95B4-394F9F7DE054@gmail.com>
Lidong Yan <yldhome2d2@gmail.com> writes:
> The `—ignore-matching-lines` options is introduced in 296d4a94e72
> (Michał Kępień 2020-10-20 08:48:09 +0200 5803) Since the Git documentation
WTH is that reference format?
> doesn't specify how git diff --ignore-matching-lines=<regex>
> is supposed to behave when used with --name-only,
True.

Traditionally, these options that deliberately allowed loss of information (e.g., --name-only that strips _how_ they are different, --quiet that only talks about if there is anything different) are meant primarily to be optimization---when it can compute its result without looking into the blob contents, it is very much encouraged to do so. So originally the design principle was that options like -w -b that needs to look into the blob contents are to be ignored when computing --name-only and --quiet.

Things gradually have changed, and these days we generally consider it a bug for the class of options that deliberately lose information to disable the class of options that require to look into blob contents to compute the outcome if the output were not losing information.

"--ignore-matching-lines", together with any options that affect XDF_IGNORE_WHITESPACE* (like -w, --ignore-space-at-eol) are special cased to tell the machinery to look at the contents when deciding what exit code to return:

	if ((options->xdl_opts & XDF_WHITESPACE_FLAGS) ||
	    options->ignore_regex_nr)
		options->flags.diff_from_contents = 1;
	else
		options->flags.diff_from_contents = 0;

so "git diff --ignore-matching-lines --quiet" would already be operating correctly, I would think.

It is just --raw, --name-only, --name-status, and --checkdiff output formats that deliberately ignore content based ignore mechanisms.

And I do not think it would be a good change to have them follow "ignore" bits. When asked "has this path been modified?" "what are the before and after blob object names?" etc., it does not make sense for the answer to be different depending on the presense of -w or --ignore-matching options.

Previous: Lidong YanNext: Lidong Yan
Message 3 of 35 in “git-diff: --ignore-matching-lines has no effect on the output when --name-only is used”
  1. hi@arnes.spaceJul 23, 2025
  2. Lidong YanJul 23, 2025
  3. Junio C HamanoJul 23, 2025
  4. Lidong YanJul 24, 2025
  5. Eric SunshineJul 24, 2025
  6. Lidong YanJul 24, 2025
  7. hi@arnes.spaceJul 25, 2025
  8. hi@arnes.spaceJul 25, 2025
  9. Lidong YanJul 25, 2025
  10. hi@arnes.spaceJul 25, 2025
  11. Jeff KingJul 25, 2025
  12. Junio C HamanoJul 25, 2025
  13. diff: ensure consistent diff behavior with -I<regex> across output formatsLidong Yan, Jul 29, 2025
  14. Junio C HamanoJul 30, 2025
  15. Jeff KingAug 2, 2025
  16. Lidong YanAug 3, 2025
  17. Junio C HamanoAug 3, 2025
  18. Junio C HamanoAug 4, 2025
  19. Jeff KingAug 4, 2025
  20. diff: ensure consistent diff behavior with -I<regex> across output formatsLidong Yan, Aug 3, 2025
  21. Junio C HamanoAug 4, 2025
  22. Lidong YanAug 4, 2025
  23. Junio C HamanoAug 4, 2025
  24. Lidong YanAug 5, 2025
  25. Junio C HamanoAug 5, 2025
  26. diff: ensure consistent diff behavior with ignore optionsLidong Yan, Aug 6, 2025
  27. Junio C HamanoAug 6, 2025
  28. Lidong YanAug 7, 2025
  29. Junio C HamanoAug 6, 2025
  30. Lidong YanAug 7, 2025
  31. diff: ensure consistent diff behavior with ignore optionsLidong Yan, Aug 7, 2025
  32. Junio C HamanoAug 7, 2025
  33. Lidong YanAug 8, 2025
  34. diff: ensure consistent diff behavior with ignore optionsLidong Yan, Aug 8, 2025
  35. Johannes SchindelinOct 16, 2025

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.