Git LFS 不考虑 credential.helper 的配置文件级别

Git LFS does not respect level of config files for credential.helper

运行一个Git LFS命令例如

GIT_TRACE=1 git lfs locks

显示系统 credential.helper 已被使用,即使它已被本地配置覆盖。

运行

git config --system -l

列出'credential.helper=manager'

git config --local -l

列出'credential.helper=other'

运行 启用跟踪器的 Git LFS 锁定命令显示此行

run-command.c:663       trace: run_command: 'git credential-manager get'

使用

删除系统范围的管理器
git config --system --unset credential.helper

修复了问题,我的本地助手 'other' 被正确使用。 根据 git configuration documentation,每个级别都胜过前一个级别,因此 Git LFS 不遵守 git 标准。有没有什么聪明的方法可以在不取消系统范围的帮助程序的情况下完成这项工作,并且可能会破坏其他存储库的身份验证?

实际上,Git LFS 在这里做的是对的。它使用 Git 的 git credential 命令,因此完全继承了 Git 本身的行为。

虽然您是正确的,当 Git 选项采用单个值时,更具体的配置文件会覆盖更通用的文件,但在 credential.helper 的情况下,可以指定多个值。如果您对一组站点(例如,一组域中的站点)有一个自定义凭证助手,然后对其他站点有一个常规助手,这会很有帮助。在这种情况下,所有凭据助手都将被要求提供凭据,直到找到一个提供所需凭据的人。

如果你只想为一个存储库覆盖它,你可以在 .git/config 中写这样的东西来首先清除现有列表(带有空条目)然后添加一个新的凭证助手:

[credential]
    helper =
    helper = other

git config 开始正确设置非常棘手,因此我建议手动编辑文件。