V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
a33291
V2EX  ›  问与答

win git2.50 版本,发现 repo 和 user 级别的配置优先级居然低于 system 级别配置

  •  
  •   a33291 · 6 天前 · 504 次点击
    卸载重装也一样

    比如在 C:\Program Files\Git\etc\gitconfig 里设置 credential.helper=manager
    然后在仓库或用户级别设置 credential.helper=store
    git pull 还是会弹出 manager 的认证 UI 界面

    目前是移除了 system 级别的配置文件才解决这个问题

    难道我理解错配置优先级了?
    6 条回复    2025-07-01 21:53:14 +08:00
    villivateur
        1
    villivateur  
    PRO
       5 天前   ❤️ 1
    你再配一下其他的参数试试呢,比如 username 和 email
    a33291
        2
    a33291  
    OP
       5 天前
    @villivateur 感谢建议,username 的话优先级配置是有效的,只有这个 credential.helper 无效

    也许这个 credential.helper 是额外的配置策略,但是大部分网上资料都是通过直接配置这个来修改参数

    现在的话,我测试还是必须修改 system 级别才有效
    h404bi
        3
    h404bi  
       5 天前   ❤️ 1
    git credential.helper 的策略是 system->global->local 合并*逐级*测试的,而非你想的*覆盖*。也就是先尝试 system 里设置的 credential.helper ,如果可用就跳过后续 global/local 里的设置。具体可查阅下 git-scm doc 关于 helper 的部分
    a33291
        4
    a33291  
    OP
       5 天前
    @h404bi 感谢回复
    这比较反直觉,其他配置都遵循 local->global->system 这种优先级策略
    我在文档里找了以下,没有搜到描述其配置读取优先级的说明

    而且网上找到的各种关于认证的资料,基本都是让改 global 配置,比如 https://stackoverflow.com/questions/13198143/how-do-i-disable-gits-credential-helper-for-a-single-repository

    目前没有明确的资料说这个配置优先级是反向的,我还是倾向于认为是我这边环境问题,我得找个干净的机器再试试
    h404bi
        5
    h404bi  
       5 天前   ❤️ 2
    @a33291
    找到了几年前我在 GitHub 上的回复 https://github.com/ScoopInstaller/Main/issues/2894#issuecomment-1125150531 虽然是针对 Scoop 但是情景是一样的。git-scm doc 里那句话 ..tried in turn 很容易错过。这确实挺反直觉,主要是其它设置项都使用覆盖策略。
    a33291
        6
    a33291  
    OP
       5 天前
    @h404bi #5 清晰明了,感谢
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5861 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 01:43 · PVG 09:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.