如何禁用git';单个存储库的凭据帮助器?
如果我在我的如何禁用git';单个存储库的凭据帮助器?,git,Git,如果我在我的~/.gitconfig中设置了凭证帮助器,我如何在特定的repo中禁用/绕过它而不使用凭证帮助器 我已尝试编辑repo的.git/config文件以清空credential.helper属性,如下所示: [credential] helper = 。。。但是当我执行git推送时会收到以下错误消息,git仍然使用~/.gitconfig中的默认凭证帮助程序: git: 'credential-' is not a git command. See 'git --help'
~/.gitconfig
中设置了凭证帮助器,我如何在特定的repo中禁用/绕过它而不使用凭证帮助器
我已尝试编辑repo的.git/config
文件以清空credential.helper
属性,如下所示:
[credential]
helper =
。。。但是当我执行git推送时
会收到以下错误消息,git仍然使用~/.gitconfig
中的默认凭证帮助程序:
git: 'credential-' is not a git command. See 'git --help'.
Did you mean this?
credential
我使用的是git版本1.7.12
(后台故事/用例:Git配置为使用
存储
帮助器,该帮助器在磁盘上存储未加密的密码。缓存
帮助器在此系统上不可用。我有几个repo,我宁愿每次键入密码,也不愿将其保存在磁盘上。)设置为空字符串的配置变量与未设置变量不同。如果变量已在~/.gitconfig
中设置,则无法强制在.git/config
中取消设置该变量
此外,credential.helper
是使用多个值的这些变量之一,在这种情况下,这些值从所有读取配置文件聚合而来
所以基本上你的选择似乎是:
- 不要在
中使用~/.gitconfig
;通过指定repo URL,仅在存储库的credential.helper
或.git/config
中为需要的存储库设置store helper,例如~/.gitconfig
[credential "https://specific.example.com/repo.git"] helper = store
- 或者实现您自己的助手,该助手对一组已配置的存储库不做任何操作,其余部分委托给
git凭证存储
helper=
)将实际工作
参见(2016年2月26日)作者。(于2016年4月3日被合并)
credential.helper
配置变量是累积变量,无法从命令行重写它。作为一种特殊情况,给出一个空字符串作为其值,现在作为清除各种文件中指定值的信号
凭证
:让空凭证规格重置帮助器列表
由于credential.helper
键是一个多值配置列表,因此一旦设置了helper,就无法“取消设置”它。因此,如果您的系统/etc/gitconfig
设置了一个,您永远无法避免运行它,只能在上面添加您自己的助手
由于credential.helper
的空值是无意义的(它只会尝试运行“git-credential-
”),因此我们可以假设没有人在使用它。让我们定义它来重置帮助器列表,从而覆盖优先级较低的实例
我以前来过
更方便的是:对于Git2.26(2020年第1季度),这种覆盖甚至适用于任何值 参见,,(2020年2月20日)by.
(于2020年3月5日合并) :使用配置中最后一个匹配的用户名 签字人:brian m。卡尔森 在代码库的其他地方,我们使用最后一个匹配配置选项生效的规则 这很有帮助,因为它允许更具体的配置设置(例如,每个回购配置)覆盖不太具体的设置(例如,每个用户配置) 然而,在凭证代码中,我们不遵守此设置,而是选择了我们拥有的第一个设置,并坚持使用它 这可能会确保我们从URL中选择了值,我们希望在配置中遵守该值 但是,这两种方法都有可能做到,所以让我们检查一下这个值是否是我们通过协议连接得到的值,如果存在的话,它将来自URL,如果是的话,请保留它 否则,让我们用从配置中获得的最新版本覆盖该值,因此保留最后一个配置值
我已经尝试过,而且效果很好的是:
$ git config --system --unset credential.helper
但为了使其正常工作,我必须将git-bash.exe设置为具有管理员权限
不幸的是,我认为这是一个全局变量。您应该测试并查看它是否适用于单个存储库
祝您好运除了“
git config credential.helper=
”之外,您现在(git 2.13.x/git 2.14,2017年第3季度)可以仅为一个命令(而不仅仅是给定repo中的任何命令)禁用凭证帮助器
这意味着git-c credential.helper=clone/url/remote/repo现在可以工作了 “
git clone--config var=val
”是一种填充
新存储库的每个存储库配置文件,但当val为空字符串时,该文件无法正常工作这个问题已经解决了 参见(2017年5月2日)作者。
(于2017年5月16日被合并)
clone
:在-c
“git clone--config
”使用以下咒语将项添加到配置文件中,而不是替换现有值:
git_config_set_multivar_gently(key, value, "^$", 0)
只要没有与regex^$
匹配的现有值,它就会按预期工作并添加到配置中。但是,当值为空时,它将替换现有值
在克隆过程中尝试设置credential.helper
以使用特定的帮助程序而不继承~/.gitconfig
和/etc/gitconfig
就是我跑,
git clone -c credential.helper= \
-c credential.helper=myhelper \
https://example.com/repo
打算生成配置:
[credential]
helper =
helper = myhelper
如果没有此修补程序,将不包括“helper=
”行,并且将使用/etc/gitconfig
中的凭证帮助程序
请注意,文档现在更清晰,包括: 凭证文档:使多助手行为更加突出 Git的配置系统通过从常规到特定顺序读取多个配置文件来工作:
- 第一,制度