运行Git LFS命令,如
GIT_TRACE=1 git lfs locks
显示系统credential.helper已被使用,即使它已被本地配置覆盖。
运行
git config --system -l
lists'credential.helper=manager'
而
git config --local -l
仅列出'credential.helper=other'
在启用跟踪器的情况下运行Git LFS locks命令显示以下行
run-command.c:663 trace: run_command: 'git credential-manager get'
使用删除系统范围的管理器
git config --system --unset credential.helper
修复了该问题,并且正确使用了我的本地助手"other"。根据git配置文档,每个级别都胜过前一个级别,因此git LFS不尊重git标准。有没有什么聪明的方法可以在不设置系统范围的帮助程序的情况下实现这一点,并可能破坏其他存储库的身份验证?
实际上,Git LFS在这里做的是正确的。它使用Git的git credential
命令,因此完全继承了Git本身的行为。
虽然您正确地认为,当Git选项采用单个值时,更具体的配置文件会覆盖更通用的文件,但在credential.helper
的情况下,可以指定多个值。如果您有一组站点(例如,一组域中的站点(的自定义凭据帮助程序,然后有其他站点的常规帮助程序,这可能会很有帮助。在这种情况下,所有凭据助手都将被要求提供凭据,直到找到一个提供所需凭据的凭据为止。
如果你只想为一个存储库覆盖它,你可以在.git/config
中写这样的东西,首先清除现有列表(使用空条目(,然后添加一个新的凭证助手:
[credential]
helper =
helper = other
从git config
正确设置这一点非常棘手,因此我建议手动编辑该文件。