为何在Android Studio终端执行拉取操作时Github始终要求输入登录凭证
Android Studio拉取GitHub仓库反复弹凭证报错的修复方案
核心矛盾解释
你遇到的“同样的凭证终端能过、Studio弹窗报错”的问题,本质是两套独立的凭证校验逻辑不互通导致的:
- 终端侧之所以能正常通过,是因为第一次拉取时输入的正确凭证已经被系统缓存,后续操作会直接读取缓存不会触发重新校验
- 而Studio弹窗弹出的校验窗口是Git Credential Manager(GCM)触发的,它的校验规则和终端缓存完全独立:GitHub当前已禁用HTTPS协议下的账号密码直连,这个弹窗要求输入的不是你的GitHub账号登录密码,而是个人访问令牌(PAT),你拿日常的账号登录密码去填必然会校验失败
- 之前配置SSH密钥没生效,基本是因为仓库的远程地址还停留在HTTPS形式,根本没有走SSH校验链路,配置的密钥自然不会被触发
分步操作指南
1. 先确认当前仓库的远程连接协议
在Android Studio内置终端执行命令:git remote -v
根据输出结果判断当前链路:
- 输出为
https://github.com/xxx/xxx.git:说明全程走HTTPS协议,SSH配置完全没参与链路 - 输出为
git@github.com:xxx/xxx.git:说明走SSH协议,弹窗是Studio自身的账号授权模块触发,和Git拉取链路无关
2. 对应场景解决凭证报错
场景A:坚持使用HTTPS协议拉取
- 不要在弹窗中输入GitHub的网页登录密码,前往GitHub后台生成一个具备
repo权限的经典版个人访问令牌(PAT) - 打开对应系统的凭证存储模块:Windows为「凭据管理器-普通凭据」、Mac为「钥匙串访问-密码」,删除所有和github.com相关的旧缓存条目,避免旧的错误凭证覆盖新输入的内容
- 重新触发拉取操作,在弹窗中用户名填你的GitHub账号名,密码栏粘贴刚才生成的PAT,即可通过校验
场景B:使用已配置的SSH密钥免密拉取
- 在终端执行命令将仓库远程地址强制切换为SSH形式:
git remote set-url origin git@github.com:你的用户名/你的仓库名.git - 切换完成后执行
git ls-remote验证SSH链路连通性,链路通了之后Studio拉取操作就不会再弹出HTTPS的凭证输入窗
3. 消除Studio与终端的凭证逻辑冲突
- 打开Android Studio设置页,进入
版本控制-GitHub配置板块,删除所有缓存的错误GitHub账号条目,选择通过官方OAuth流程重新授权登录 - 确认设置中Git可执行文件的路径,和终端环境下使用的Git路径完全一致,避免两个环境调用不同版本的Git、走独立的凭证存储逻辑,导致同一份凭证一个校验通过、一个校验失败
终端侧的凭证输入界面参考示例:
终端凭证输入界面
内容的提问来源于stack exchange,提问作者rg_rg
相关产品推荐
相关产品推荐

