You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Git权限错误:使用个人GitHub账号推送代码遭拒求助

解决GitHub多账号推送时本地配置不生效的问题

我之前也碰到过一模一样的窘境!全局Git配置是工作账号的信息,本地个人项目仓库特意单独设置了个人账号的user.name和user.email,结果推送代码时还是默认用工作账号去验证,直接被提示无权限。

其实这里有个很容易混淆的点:你设置的user.name和user.email只是用来标记代码提交的作者信息,真正和GitHub通信、验证身份的是本地存储的凭据(HTTPS的token/密码缓存,或者SSH密钥)——这俩是完全独立的东西,所以光改作者信息没用。

下面分两种常用的连接方式给你解决办法:

如果你用的是HTTPS连接

  1. 清理旧的凭据缓存
    你的电脑可能已经缓存了工作账号的GitHub凭据,推送时直接用了缓存的信息。

    • Windows:打开「控制面板」→「凭据管理器」→「Windows凭据」,找到所有和github.com相关的条目,删掉它们。下次推送时Git会重新弹出验证窗口,输入个人账号的token即可。
    • Mac:打开「钥匙串访问」,搜索github.com,删掉对应的密码条目,之后推送时重新输入个人token。
    • Linux:如果用的是libsecret作为凭据助手,可通过对应工具(比如GNOME的「密码和密钥」)删除GitHub相关条目。
  2. 给本地仓库单独绑定凭据(一劳永逸)
    如果你不想每次都清理缓存,可以给这个个人项目仓库单独设置凭据存储:

    # 进入个人项目仓库目录
    cd /path/to/your/personal/repo
    # 设置当前仓库的凭据存储文件
    git config credential.helper store --file .git/credentials
    

    然后在仓库的.git/credentials文件里写入:

    https://<你的个人GitHub用户名>:<你的个人GitHub访问token>@github.com
    

    这样这个仓库每次推送都会用这个指定的凭据,不会再用全局的。

如果你用的是SSH连接

SSH密钥是和GitHub账号绑定的,全局如果默认用的是工作账号的密钥,个人仓库需要单独指定密钥:

  1. 生成个人账号的SSH密钥(如果还没的话)
    ssh-keygen -t ed25519 -C "你的个人GitHub邮箱"
    
    生成时注意保存路径,比如设为~/.ssh/id_ed25519_personal,不要覆盖工作账号的密钥。
  2. 将个人公钥添加到个人GitHub账号
    把生成的id_ed25519_personal.pub文件内容复制,粘贴到个人GitHub账号的「Settings」→「SSH and GPG keys」里,添加新的SSH密钥。
  3. 让本地仓库使用个人密钥
    进入个人项目仓库,执行:
    git config core.sshCommand "ssh -i ~/.ssh/id_ed25519_personal -F /dev/null"
    
    这个命令会让当前仓库在推送时强制使用个人的SSH密钥,忽略全局的SSH配置。

验证配置是否生效

做完上面的步骤后,你可以验证一下:

  • 确认本地仓库的作者信息正确:
    git config user.name
    git config user.email
    
    输出应该是你个人账号的用户名和邮箱。
  • 验证身份凭据:
    • HTTPS方式:执行git credential fill <<<"url=https://github.com",会显示当前使用的用户名,确认是个人账号。
    • SSH方式:执行ssh -T git@github.com -i ~/.ssh/id_ed25519_personal,如果返回Hi <你的个人用户名>! You've successfully authenticated...就说明没问题了。

内容的提问来源于stack exchange,提问作者Pro Q

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 08:47:13