vscode 切换 git 账号需同步清理四层:git 提交身份(local/global config)、系统凭证缓存(credential helper)、vscode git 扩展状态(globalstorage/state.json)、github 插件 token;任一层残留均会导致切换失败。

VSCode 里 Git 账号不是“登出”就能切干净的——必须同时清理三处:Git 提交身份、凭证缓存、VSCode 内部 Git 配置缓存。漏掉任意一处,下次提交仍会用旧账号或报错。
git config 里的 user.name / user.email 必须重设
VSCode 的 Git 功能完全依赖系统 git 命令读取 .gitconfig,编辑器设置里改 git.user.name 无效。不清理这里,commit 作者永远是旧名字。
- 执行
git config --global --unset user.name和git config --global --unset user.email彻底清空全局配置 - 进目标项目根目录,运行
git config --local user.name "New Name"和git config --local user.email "new@domain.com"设置当前项目专用身份 - 检查是否生效:
git config --local --get user.name和git config --local --get user.email - 注意:改完必须执行
Ctrl+Shift+P→ 输入Developer: Reload Window,否则 VSCode Source Control 面板仍显示旧信息
凭证缓存(credential helper)要手动清除
Windows 上默认用 wincred,macOS/Linux 多用 osxkeychain 或 libsecret,它们会把密码存在系统凭据管理器里,VSCode 拉代码时直接复用——你根本不会被提示输新密码。
抓取指定 GitHub用户的 Stars 项目,生成标准化中文 Markdown 报告。用户提及「分析 GitHub stars」「导出收藏项目」「汇总 GitHub 星标」「生成 stars 报告」或粘贴含 ?tab=stars 的链接时触发。执行通过 bash...
- 先查当前 helper:
git config --global credential.helper - 清除已存账号:
git credential-manager reject(Windows/macOS 新版),或手动运行:echo "protocol=https\nhost=github.com" | git credential reject(替换github.com为你的 Git 服务器域名) - 如果用的是
store方式(明文存~/.git-credentials),直接删该文件即可 - 验证是否清空:在 VSCode 终端执行
git pull,应立即弹出用户名/密码输入框
VSCode 自身 Git 扩展可能缓存旧 token
某些 Git 托管平台(如 GitHub)通过 OAuth token 登录后,VSCode Git 扩展会把 token 存在自己的状态里,即使你清了系统凭证,它仍尝试用旧 token 认证,导致 push 失败或权限拒绝。
- 关闭所有 VSCode 窗口(不是仅关标签页)
- 删除 VSCode 用户数据中的 Git 相关状态:
Windows:%APPDATA%\Code\User\globalStorage\state.json
macOS:~/Library/Application Support/Code/User/globalStorage/state.json
Linux:~/.config/Code/User/globalStorage/state.json - 重启 VSCode 后,首次 Git 操作(如 clone 或 push)会重新触发登录流程
- 如果仍自动跳过登录,检查是否装了 GitHub Authentication 插件——它的 token 是独立管理的,需单独在插件设置里 Sign Out
多账号共存时最容易忽略的坑
很多人想在个人项目和公司项目间切换账号,但只设全局 user.email,结果所有 commit 都用了同一个邮箱——GitHub/GitLab 头像不显示、贡献统计归错人、甚至权限被拒。
- 项目级配置优先级高于全局,务必用
git config --local在每个项目里单独设user.email - 检查
.git/config文件末尾是否有[user]区块,有才说明本地配置已生效 - 已 push 的错误 commit 无法靠改 config 补救:
git commit --amend --author="New Name <new>"</new>只能修最新一条;历史多条需git rebase -i+exec git commit --amend --author=...,且强制推送前必须确认协作者没拉取
真正麻烦的从来不是“怎么切”,而是“切到哪一层”。Git 身份、HTTP 凭证、OAuth token、VSCode 扩展状态——四层缓存各自独立,任何一层残留都会让切换失效。动手前先确认你要换的是哪一层,再对应清理,比反复试错快得多。










