Git推送远程仓库时本地配置用户未覆盖全局用户致权限拒绝
问题原因及解决方法
核心区别:提交作者配置 vs 推送身份验证
Git的user.name/user.email配置(全局或本地)只负责生成提交记录里的作者/提交者信息,和推送远程仓库时的身份验证是完全独立的两个机制:
- 提交作者显示为ninadraj321,是因为本地仓库的
user.name/user.email覆盖了全局配置,这个配置仅作用于提交记录的元数据,不影响身份验证环节。 - 推送时报错显示使用ninadraj221的身份,是因为Git访问远程仓库的凭据(HTTPS的用户名密码、SSH密钥关联的账号)是全局生效的,本地的user配置不会覆盖这个凭据。
解决方法
针对当前仓库单独配置身份验证凭据:
- HTTPS方式:修改当前仓库的远程URL,显式指定ninadraj321作为用户名:
下次推送时会提示输入ninadraj321的GitHub密码或个人访问令牌。git remote set-url origin https://ninadraj321@github.com/ninadraj321/TestRepo.git - SSH方式:确保当前仓库使用的SSH密钥属于ninadraj321账号,或在本地
~/.ssh/config中为该仓库的域名指定对应密钥:
然后修改仓库远程URL为:Host github-ninadraj321 HostName github.com User git IdentityFile ~/.ssh/ninadraj321_rsagit remote set-url origin git@github-ninadraj321:ninadraj321/TestRepo.git
内容的提问来源于stack exchange,提问作者Ninad Yadav
相关产品推荐
相关产品推荐

