我偶然发现了一个git命令:
git config --global --add merge.ff false
据推测,合并分支时默认禁用快进。但--add
选项引起了我的注意,所以我现在想知道它究竟做了什么。任何人吗?
答案 0 :(得分:2)
作为documented in the manual page,--add
标记告诉git config
不要覆盖任何现有的merge.ff
设置,而是添加除现有设置之外的新设置。< / p>
由于merge.ff
不是多值可配置的,因此这通常是错误的。 (事实上,由于Git扫描配置文件的方式,新添加的设置会覆盖以前的任何设置,并且最后添加--add
,因此无论如何它都可以工作。)对于{{1}这样的单值配置项在任何给定的配置文件中都应该只有一个条目。
(例如,将其视为告诉Git不要做某事,然后告诉它做某事,然后告诉它不做那件事.Git只是服从 last 命令在这种情况下,它听到了。)
多值配置项的示例是每个远程的merge.ff
行。例如,fetch
通常只是remote.origin.fetch
,但您可以添加 +refs/heads/*:refs/remotes/origin/*
或+refs/notes/*:refs/notes/*
来复制来自+refs/notes/*:refs/notes/origin/*
的备注,实例。 (你肯定不想删除第一个设置,只是添加第二个设置。)
(这不是特定于bash的东西,而是特定于Git的东西.Bash只使用指定的参数运行命令,并将这些参数的解释留给命令。)
答案 1 :(得分:1)
--add
在不更改任何现有值的情况下向选项添加新行。这与在--replace-all中提供^ $作为value_regex相同。