无法重置Git凭证,推送GitHub仓库时提示其他用户无权限报错403
问题解决步骤
首先明确:git config 设置的 user.name、user.email 仅用于标识提交记录的作者信息,和GitHub推送的身份验证凭证完全独立,修改这两个参数不会清除已存储的登录凭证。
1. 清除明文存储的凭证文件
部分场景下Git会把凭证明文存储在用户根目录的文件中,先执行命令检查并删除:
# 检查文件是否存在 ls ~/.git-credentials # 如果文件存在则直接删除 rm ~/.git-credentials
2. 清除系统密钥环中存储的Git凭证
Kali Linux默认使用libsecret管理系统密钥,之前存储的GitHub账号凭证会保存在密钥环中,执行如下命令删除所有GitHub相关凭证:
secret-tool clear service github
如果提示secret-tool命令不存在,先安装对应工具包:
sudo apt update && sudo apt install libsecret-tools -y
3. 配置仓库远程地址(可选,建议操作)
为了避免后续多账号切换时出现凭证匹配冲突,可以直接在当前仓库的远程地址中嵌入目标用户名,推送时会直接匹配对应账号的凭证:
git remote set-url origin https://user1@github.com/user1/<reponame>.git
请将命令中的user1、<reponame>替换为实际的GitHub用户名和仓库名称。
4. 验证推送
重新执行推送命令:
git push -u origin main
此时会弹出密码输入提示,输入user1账号的GitHub个人访问令牌(PAT) 即可完成推送(注意GitHub早已不支持账号密码直接进行推送操作,必须用PAT作为验证密码)。
长期多账号切换方案(可选)
如果需要频繁切换多个GitHub账号,可以为每个账号生成独立的SSH密钥,在~/.ssh/config中配置不同账号的Host别名,仓库远程地址使用SSH协议,切换时仅需要修改仓库远程地址对应别名即可,不需要频繁清理凭证。
内容的提问来源于stack exchange,提问作者max.syntax
相关产品推荐
相关产品推荐

