Windows下git-bash偶发未发送Authorization头导致git操作认证失败
针对Git for Windows 2.32.0间歇性HTTP认证失败问题的解决方案
- 该问题是Git for Windows 2.32.x版本的已知Bug,核心原因是内置的curl库对
WWW-Authenticate响应头的解析逻辑存在偶发异常,遇到不规范的头字段顺序或者自定义头时会跳过认证重试流程。 - 第一优先级修复方案:直接升级Git for Windows到2.37.1及以上版本,该版本已经合并了curl的相关修复补丁,认证重试逻辑和Linux版本对齐。
git update-git-for-windows
- 如果暂时无法升级,可以通过修改Git配置强制每次请求都携带认证头,跳过首次无认证试探步骤:
git config --global http.emptyAuth true
如果只需要针对单个仓库生效,去掉--global参数在仓库目录下执行即可。
- 额外排查项:检查Gogs服务端返回的401响应头是否包含多个
WWW-Authenticate字段,或者存在非标准的认证挑战字段,旧版本Git for Windows遇到多认证挑战时会偶发选择错误的认证方式导致直接终止请求。如果存在该情况,可以调整Gogs配置只返回Basic认证挑战,避免多余的NTLM、Negotiate等认证头。 - 验证方式:配置完成后执行
GIT_CURL_VERBOSE=1 git fetch查看请求日志,确认所有请求都携带Authorization头,不会出现首次无认证请求直接返回401终止的情况。
内容的提问来源于stack exchange,提问作者blueFast
相关产品推荐
相关产品推荐

