为什么'git config'在某些情况下会创建多个配置条目?

时间:2016-04-27 13:01:38

标签: git git-config

我试图设置一些git别名并注意到git config的一个奇怪的事情:

$ git config user.name foo      # this stores the new name, ok
$ git config user.name bar baz  # this adds a 'name = bar' entry to the config, wtf?
$ git config user.name qux
warning: user.name has multiple values
error: cannot overwrite multiple values with a single value
Use a regexp, --add or --replace-all to change user.name.

我想知道为什么git会在第二种情况下存储多个值以及它何时有用?

2 个答案:

答案 0 :(得分:2)

导致“wtf”的最后一个“额外”参数是value_regex,有关详细信息,请参阅文档:https://git-scm.com/docs/git-config

可以使用多个值,例如要添加多个fetch refspec,请参阅此处的示例:https://git-scm.com/book/en/v2/Git-Internals-The-Refspec

答案 1 :(得分:1)

我在我的Git配置中有这个:

[include]
    path = ~/.gitconfig_user
    path = ~/.gitconfig_os

这允许我从外部文件的Git配置块中组合我的配置。我猜,为了保持一致性,Git允许您为任何键指定多个值,但它们只对特定的一组消费者有意义。