You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows环境下Git自定义GIT_ASKPASS脚本认证失败,用户名解析异常求助

Windows环境下Git自定义GIT_ASKPASS脚本认证失败,用户名解析异常求助

嗨,我仔细看了你的问题和调试日志,一下子就找到问题根源啦——你对GIT_ASKPASS脚本的工作机制理解错了,这不是Git的bug哦😉

问题出在哪里?

你写的token.bat一次输出了username=USERpassword=xxx两行内容,但Git的GIT_ASKPASS机制是分两次调用脚本的:

  1. 第一次调用脚本时,Git会传递一个提示参数(比如Username for 'https://github.com':),要求脚本输出纯用户名(不能带username=前缀);
  2. 第二次调用脚本时,Git会传递另一个提示参数(比如Password for 'https://USER@github.com':),要求脚本输出纯密码/令牌(同样不能带password=前缀)。

你的调试日志里明确显示了问题:Server auth using Basic with user 'username=USER'——Git把你脚本输出的整行username=USER当成了用户名,自然会认证失败。

修正后的脚本写法

把你的token.bat改成根据Git的提示输出对应内容的版本,示例如下:

@echo off
:: 判断Git传递的提示信息,输出对应的凭据
if "%~1" == "Username for 'https://github.com':" (
    echo USER
) else if "%~1" == "Password for 'https://USER@github.com':" (
    echo ghp_<rest of the token>
)

额外注意事项

  • 确保输出内容没有多余的空格或换行echo USER后面不要加空格,否则空格会被当作用户名的一部分;
  • 如果你的仓库地址有自定义路径,要对应调整提示信息的判断逻辑;
  • 测试前可以先清空之前的环境变量缓存,重新设置GIT_ASKPASS=%~dp0\token.bat再执行Git操作。

这样修改后,Git就能正确解析用户名和令牌,认证应该就正常啦!

火山引擎 最新活动