GitHub仓库可Fetch、Pull但无法Push,求解决方案
解决Git Push时要求GitHub用户名的问题
问题根源
你的远程仓库配置采用的是HTTPS协议地址,即便本地已经正确配置SSH证书,Git仍会走HTTPS的认证流程。而GitHub早已停止支持密码认证,因此触发了认证失败的提示。
解决方案一:切换远程仓库地址为SSH格式
- 确认当前远程地址(你已提供,可再次验证):
git remote -v - 删除原有HTTPS远程地址:
git remote remove origin - 添加SSH格式的远程地址(替换
<my_account>和<my_repo>为你的实际账号与仓库名):git remote add origin git@github.com:<my_account>/<my_repo>.git - 验证远程地址修改结果:
正常输出应为:git remote -vorigin git@github.com:<my_account>/<my_repo>.git (fetch) origin git@github.com:<my_account>/<my_repo>.git (push) - 再次尝试推送变更:
此时Git会使用你配置的SSH密钥完成认证,不会再要求输入用户名密码。git push
解决方案二:使用Git凭证助手(保留HTTPS协议)
若偏好继续使用HTTPS,可通过存储个人访问令牌(PAT)绕过密码认证:
- 在GitHub账号设置中生成带
repo权限的个人访问令牌(PAT)。 - 配置Git凭证助手自动存储凭证:
git config --global credential.helper store - 首次推送时,输入你的GitHub账号名作为用户名,将生成的PAT作为密码输入。后续Git会自动复用存储的凭证,无需重复输入。
内容的提问来源于stack exchange,提问作者fearless_fool
相关产品推荐
相关产品推荐

