Git LFS 不尊重 credential.helper 的配置文件级别

Sc4*_*c4v 5 windows git git-lfs git-credential-manager

运行 Git LFS 命令,例如

GIT_TRACE=1 git lfs locks
Run Code Online (Sandbox Code Playgroud)

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

跑步

git config --system -l
Run Code Online (Sandbox Code Playgroud)

列出“credential.helper=manager”

然而

git config --local -l
Run Code Online (Sandbox Code Playgroud)

列出 'credential.helper=other'

在启用跟踪器的情况下运行 Git LFS locks 命令会显示此行

run-command.c:663       trace: run_command: 'git credential-manager get'
Run Code Online (Sandbox Code Playgroud)

删除系统范围管理器

git config --system --unset credential.helper
Run Code Online (Sandbox Code Playgroud)

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

bk2*_*204 4

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

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

如果您只想为一个存储库覆盖此设置,您可以编写类似的内容以.git/config首先清除现有列表(使用空条目),然后添加一个新的凭据助手:

[credential]
    helper =
    helper = other
Run Code Online (Sandbox Code Playgroud)

从 中正确设置这一点非常棘手git config,因此我建议手动编辑该文件。