GitHub仓库迁移至其他账号后无法向main分支推送权限报错
GitHub仓库迁移后无push权限解决方案
1. 优先校验本地仓库远程地址配置
打开本地仓库对应的终端,执行命令查看当前绑定的远程仓库地址:
git remote -v
如果返回的origin对应地址仍是旧学校账号名下的仓库路径,直接执行命令替换为新账号下的目标仓库地址:
- HTTPS协议替换命令:
git remote set-url origin https://github.com/[你的新账号名]/[你的仓库名].git
- SSH协议替换命令:
git remote set-url origin git@github.com:[你的新账号名]/[你的仓库名].git
替换完成后重新执行git remote -v确认地址无误,先尝试一次push操作。
2. 清除本地缓存的旧GitHub账号凭证
如果远程地址配置正确,问题基本来自本地Git缓存了旧学校账号的认证信息——VSCode内登录新账号不会覆盖系统层存储的Git凭证:
- Windows系统:打开系统「凭据管理器」,选择「Windows凭据」分类,找到所有标注为
git:https://github.com的条目,全部删除。 - Mac系统:打开「钥匙串访问」,搜索
github.com,删除所有关联的互联网密码/访问凭证条目。 - Linux系统:GNOME桌面打开「密码和密钥」应用删除github相关凭证;如果使用git原生凭证存储,执行
git config --global --unset credential.helper清空旧配置。
清理完成后回到VSCode重新触发push,此时会弹出GitHub官方授权窗口,选择绑定永久邮箱的新账号完成授权即可正常推送。
3. 校验仓库侧权限与分支规则
如果上述操作后仍报错,登录新账号的GitHub网页端进入对应仓库检查:
- 进入仓库
Settings > Collaborators页面,确认当前使用的新账号为仓库所有者,不存在误设为只读角色的情况。 - 进入仓库
Settings > Branches页面,检查main分支是否开启了分支保护规则,若规则限制了推送权限,可临时调整规则或为当前账号分配对应推送权限。
4. SSH协议额外排查项
如果你使用SSH协议连接GitHub,执行以下命令校验当前SSH连接绑定的账号:
ssh -T git@github.com
如果返回的欢迎信息显示的是旧学校账号名,说明你本地的SSH公钥仍绑定在旧账号下。打开本地~/.ssh/id_ed25519.pub(若使用RSA密钥则为id_rsa.pub)复制公钥内容,登录新GitHub账号进入Settings > SSH and GPG keys页面添加公钥,重新执行SSH连接校验显示新账号名后,即可正常push。
不要按照报错引导创建fork推送,该操作会将代码推送到自动生成的仓库副本,而非你迁移完成的目标主仓库。
内容的提问来源于stack exchange,提问作者Ben Trainor
相关产品推荐
相关产品推荐

