"git config" 命令中的参数“--add”是什么意思?

What does the argument "--add" mean in the "git config" command?

我偶然发现了一个 git 命令:

git config --global --add merge.ff false

大概是在合并分支的时候默认关闭了快进。但是 --add 选项引起了我的注意,所以我现在想知道它到底做了什么。有人吗?

documented in the manual page 一样,--add 标志告诉 git config 不要覆盖任何现有的 merge.ff 设置,而是在任何现有设置之外添加一个新设置.

由于 merge.ff 不是多值可配置项,这通常是错误的做法。 (实际上,由于 Git 扫描配置文件的方式,新添加的设置会覆盖之前的任何设置,而 --add 会在最后添加,所以它仍然有效。)对于单值配置项就像 merge.ff 在任何给定的配置文件中真的应该只有一个条目。

(把它想象成,例如,告诉 Git 不要做某事,然后告诉它做某事,然后告诉它不要做那件事。Git 简单地服从在本例中,它听到的是 last 命令。)

多值配置项的一个示例是每个遥控器的 fetch 行。例如,remote.origin.fetch 通常只是 +refs/heads/*:refs/remotes/origin/*,但您可以 添加 +refs/notes/*:refs/notes/*+refs/notes/*:refs/notes/origin/* 以从 origin 复制注释], 例如。 (您肯定不想删除第一个设置,只是为了添加第二个设置。)

(这不是 bash 特定的东西,而是 Git 特定的东西。Bash 只是运行带有指定参数的命令,并保留对这些参数的解释命令的参数。)

来自git-config doc

--add

Adds a new line to the option without altering any existing values. This is the same as providing ^$ as the value_regex in --replace-all.