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

[PATCH] diff: add --no-indicators option

From
Harald Nordgren via GitGitGadget <gitgitgadget@gmail.com>
Date
Dec 19, 2025, 08:17 UTC
Message-ID
<pull.2133.git.git.1766132264231.gitgitgadget@gmail.com>
From: Harald Nordgren <haraldnordgren@gmail.com>

Add --no-indicators to replace '+', '-', and ' ' indicators in the left margin with spaces. Colors are preserved, allowing diffs to be distinguished by color alone.

This is useful when copy-pasting diff output, as the indicators no longer need to be manually removed.

Signed-off-by: Harald Nordgren <haraldnordgren@gmail.com>
---
    diff: add '--no-indicators' option
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-2133%2FHaraldNordgren%2Fno-indicators-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-2133/HaraldNordgren/no-indicators-v1
Pull-Request: https://github.com/git/git/pull/2133
 diff.c                 | 17 +++++++++++++++++
 t/t4000-diff-format.sh | 32 ++++++++++++++++++++++++++++++++
 2 files changed, 49 insertions(+)
diff --git a/diff.c b/diff.c
index 436da250eb..668ba349fe 100644
--- a/diff.c
+++ b/diff.c
@@ -5290,6 +5290,20 @@ static int diff_opt_char(const struct option *opt,
 	return 0;
 }
 
+static int diff_opt_no_indicators(const struct option *opt,
+				  const char *arg, int unset)
+{
+	struct diff_options *options = opt->value;
+
+	BUG_ON_OPT_NEG(unset);
+	BUG_ON_OPT_ARG(arg);
+
+	options->output_indicators[OUTPUT_INDICATOR_NEW] = ' ';
+	options->output_indicators[OUTPUT_INDICATOR_OLD] = ' ';
+	options->output_indicators[OUTPUT_INDICATOR_CONTEXT] = ' ';
+	return 0;
+}
+
 static int diff_opt_color_moved(const struct option *opt,
 				const char *arg, int unset)
 {
@@ -5828,6 +5842,9 @@ struct option *add_diff_options(const struct option *opts,
 		OPT_INTEGER_F(0, "inter-hunk-context", &options->interhunkcontext,
 			      N_("show context between diff hunks up to the specified number of lines"),
 			      PARSE_OPT_NONEG),
+		OPT_CALLBACK_F(0, "no-indicators", options, NULL,
+			       N_("do not show '+', '-' and ' ' indicators in the left margin"),
+			       PARSE_OPT_NONEG | PARSE_OPT_NOARG, diff_opt_no_indicators),
 		OPT_CALLBACK_F(0, "output-indicator-new",
 			       &options->output_indicators[OUTPUT_INDICATOR_NEW],
 			       N_("<char>"),
diff --git a/t/t4000-diff-format.sh b/t/t4000-diff-format.sh
index 32b14e3a71..1863553056 100755
--- a/t/t4000-diff-format.sh
+++ b/t/t4000-diff-format.sh
@@ -95,6 +95,38 @@ test_expect_success 'git diff-files --patch --no-patch does not show the patch'
 	test_must_be_empty err
 '
 
+cat >expected_no_indicators <<\EOF
+diff --git a/path0 b/path0
+old mode 100644
+new mode 100755
+--- a/path0
++++ b/path0
+@@ -1,3 +1,3 @@
+ Line 1
+ Line 2
+ line 3
+ Line 3
+diff --git a/path1 b/path1
+deleted file mode 100755
+--- a/path1
++++ /dev/null
+@@ -1,3 +0,0 @@
+ Line 1
+ Line 2
+ line 3
+EOF
+
+test_expect_success 'git diff-files --no-indicators replaces +/- with spaces' '
+	git diff-files -p --no-indicators >actual &&
+	compare_diff_patch expected_no_indicators actual
+'
+
+test_expect_success 'git diff-files --no-indicators --color preserves colors' '
+	git diff-files -p --no-indicators --color --ws-error-highlight=none >actual.raw &&
+	test_decode_color <actual.raw >actual &&
+	grep -F "<RED> line 3<RESET>" actual &&
+	grep -F "<GREEN> Line 3<RESET>" actual
+'
 
 # Smudge path2/path3 so that dirstat has something to show
 date >path2/path3

base-commit: c4a0c8845e2426375ad257b6c221a3a7d92ecfda
-- 
gitgitgadget
Next: Collin Funk
Message 1 of 18 in “diff: add --no-indicators option”
  1. diff: add --no-indicators optionHarald Nordgren via GitGitGadget, Dec 19, 2025
  2. Collin FunkDec 19, 2025
  3. Harald NordgrenDec 19, 2025
  4. Ben KnobleDec 19, 2025
  5. Harald NordgrenDec 19, 2025
  6. Phillip WoodDec 19, 2025
  7. Harald NordgrenDec 19, 2025
  8. Phillip WoodDec 19, 2025
  9. Chris TorekDec 19, 2025
  10. Harald NordgrenDec 19, 2025
  11. Chris TorekDec 19, 2025
  12. Harald NordgrenDec 19, 2025
  13. Harald NordgrenDec 19, 2025
  14. Johannes SixtDec 20, 2025
  15. Junio C HamanoDec 19, 2025
  16. Harald NordgrenDec 19, 2025
  17. Junio C HamanoDec 20, 2025
  18. Harald NordgrenDec 20, 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.