Subject: Re: [bug report] erroneous suggestion for "--add" option in `git config set` error message

From: René Scharfe <[email-masked]>
Date: Mon, 24 Nov 2025 21:22:02 +0100

On 11/21/25 12:39 AM, Paul Wintz wrote:
> It seems that there is an erroneous suggestion in a `git config set`
> error message when setting a value that already has multiple values.
> The error message says to use the `--add` option, but this option does
> not seem to exist. The `--append` option should be suggested instead.
> 
> Steps to reproduce:
> 
> 1. Create a configuration with multiple values:
> 
>     git config set --global test.test 'hello'
>     git config set --global --append test.test 'hi'
> 
> 2. Try to set the value of `test.test`:
> 
>     git config set --global test.test 'hi'
> 
> An error message is shown:
> 
>     warning: test.test has multiple values
>     error: cannot overwrite multiple values with a single value
>            Use a regexp, --add or --replace-all to change test.test.
> 
> 3. Following the direction to use `--add` produces an error:
> 
>     > git config set --add test.test "aloha"
>     error: unknown option `add'
> 
> The error message should say `--append` instead of `--add`.
"git config --append <name> <value>" still works, but your suggestion
is good nevertheless.

--- >8 ---From 066828b25bb7d3086b9bff4188af30e07c7e1c16 Mon Sep 17 00:00:00 2001
Subject: [PATCH] config: fix suggestion for failed set of multi-valued option

The command "git config set <name> <value>" balks at options with
multiple values and suggests to use old-style "git config" actions that
can be used to change some or all of them.  List modern "git config set"
flags instead, as they are more fitting in this context.

Reported-by: Paul Wintz <[email-masked]>
Signed-off-by: René Scharfe <[email-masked]>
---
 builtin/config.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/builtin/config.c b/builtin/config.c
index 75852bd79d..86e0cd77f3 100644
--- a/builtin/config.c
+++ b/builtin/config.c
@@ -985,7 +985,7 @@ static int cmd_config_set(int argc, const char **argv, const char *prefix,
 						     argv[0], comment, value);
 		if (ret == CONFIG_NOTHING_SET)
 			error(_("cannot overwrite multiple values with a single value\n"
-			"       Use a regexp, --add or --replace-all to change %s."), argv[0]);
+			"       Use --value=<pattern>, --append or --all to change %s."), argv[0]);
 	}
 
 	location_options_release(&location_opts);
-- 
2.52.0