除了上面提到的 Git 2.9git config credential.helper=
' '之外,您现在(Git 2.13.x/Git 2.14,2017 年第三季度)可以仅为一个命令(而不仅仅是给定仓库中的任何命令)禁用凭证帮助程序
这意味着git -c credential.helper= clone /url/remote/repo
现在有效。
" git clone --config var=val
" 是一种填充新存储库的每个存储库配置文件的方法,但是当 val 为空字符串时它不能很好地工作。
这已得到修复。
请参阅Jonathan Nieder ( )的提交 db4eca1(2017 年 5 月 2 日) 。(由Junio C Hamano 合并——在提交 883247c中,2017 年 5 月 16 日)artagnon
gitster
clone
: 处理空配置值-c
" git clone --config
" 使用以下咒语将项目添加到配置文件,而不是替换现有值:
git_config_set_multivar_gently(key, value, "^$", 0)
只要没有现有值与 regex 匹配^$
,它就会按预期工作并添加到配置中。但是,当一个值为空时,它会替换现有值。
尝试credential.helper
在克隆期间设置以使用特定帮助器而不继承自~/.gitconfig
and时注意到/etc/gitconfig
。
也就是说,我跑了:
git clone -c credential.helper= \
-c credential.helper=myhelper \
https://example.com/repo
打算产生配置:
[credential]
helper =
helper = myhelper
如果没有此补丁,将helper =
不包含“ ”行,并/etc/gitconfig
使用来自的凭据助手。
请注意,提交 515360f后文档现在更加清晰:
凭证文档:使多助手行为更加突出
Git 的配置系统通过按顺序读取多个配置文件来工作,从一般到具体:
- 一、系统配置
/etc/gitconfig
- 然后是用户的配置(
~/.gitconfig
或~/.config/git/config
)
- 然后是存储库配置 (
.git/config
)
对于单值配置项,以最新值为准。
对于多值配置项,值按该顺序累积。
例如,这允许在~/.gitconfig
git 中全局设置一个凭证助手,它将尝试在所有存储库中使用,无论它们是否另外提供另一个助手。
这通常是一件好事——例如,我可以安装帮助程序来使用我的操作系统钥匙串并在全球范围内在短时间内缓存凭据。
有时人们希望能够覆盖继承的设置。
对于credential.helper
设置,这是通过在给它一个新值之前将配置项设置为空来完成的。