Github不提示凭证,执行git push时直接报错无写入权限求助
本地Git缓存的Github凭证失效或权限不足
Git会自动缓存凭证(比如系统钥匙串、Git Credential Manager),如果之前存储的凭证(比如Personal Access Token,简称PAT)过期、被撤销,或者对应仓库的写入权限被收回,Git会直接复用旧凭证发起请求,导致报错而不触发重新验证流程。
处理方式:- 清除本地缓存的Github凭证:
Windows:打开「凭据管理器」→ 找到「Windows凭据」里的Github相关条目删除;
macOS:打开「钥匙串访问」→ 搜索github.com,删除对应密码条目;
Linux:执行git credential-cache exit,或者删除~/.git-credentials文件; - 重新执行
git push -u origin main,此时会提示输入新凭证,推荐使用带有repo权限的Github PAT。
- 清除本地缓存的Github凭证:
Github仓库写入权限被变更
登录Github进入目标仓库,点击「Settings」→「Collaborators and teams」,确认你的账号在列表中且拥有「Write」权限;如果是fork的仓库,要确保你推送的是自己的fork仓库,而非上游仓库(上游仓库通常不会开放写入权限给普通用户)。Git远程仓库URL配置错误
执行git remote -v查看origin的URL,确认是你有权限写入的仓库地址(比如https://github.com/你的用户名/仓库名.git),如果地址错误,用git remote set-url origin https://github.com/你的用户名/仓库名.git修正。Github HTTP认证规则限制
Github早在2021年就禁用了账号密码的HTTP认证方式,必须使用PAT或SSH密钥进行验证。如果之前你依赖缓存的账号密码进行推送,缓存到期后就会触发权限报错。
解决:进入Github账号的「Settings」→「Developer settings」→「Personal access tokens」生成新PAT,勾选repo权限,推送时将这个PAT作为密码输入。
内容的提问来源于stack exchange,提问作者edk

