macos git多用户切换出错的核心是钥匙串残留旧凭据,解决需三步:清钥匙串中github/gitlab旧凭证、按仓库配置user.name/email、用personal access token替代密码并清理remote url。
macos 上 git 多用户切换出错,核心问题不是“账号没换”,而是钥匙串里还存着旧用户的凭据,git 每次自动拿它去认证,结果推到别人名下或直接被拒。解决的关键是:清旧凭据 + 配新身份 + 分仓库隔离。
删掉钥匙串里残留的 GitHub/GitLab 凭据
macOS 的 Git HTTPS 认证默认走钥匙串(Keychain Access),它会记住你第一次输入的用户名和 Token。即使你改了 user.name、换了 token、甚至重装 Git,只要这条记录还在,它就一直用旧的。
- 打开「钥匙串访问」App(可在 Spotlight 搜索)
- 在右上角搜索框输入 github.com 或 gitlab.com 或你的私有域名(如 git.company.com)
- 找到类型为「互联网密码」的条目,双击打开 → 点「显示密码」前先解锁钥匙串(输系统密码)→ 确认是旧账号后,直接删除整条
- 别删「网页密码」类条目,那跟 Git 推送无关
按仓库单独配置提交身份(避免全局污染)
user.name 和 user.email 只影响 commit 记录里的署名,不参与认证,但很多人混淆这点,导致提交记录“张冠李戴”。正确做法是:每个仓库用自己的身份,不依赖全局设置。
GInstall OneClick — 一键安装 GitHub 项目:规划、克隆、安装 Node 依赖、运行开发脚本。适用于想要获取 GitHubNode.js 项目的用户。
- 进到公司项目目录:
cd ~/work/company-project - 执行:
git config user.name "Your Company Name" - 再执行:
git config user.email "your@company.com" - 进到个人项目目录:
cd ~/dev/my-open-source - 执行:
git config user.name "Your Personal Nick"和git config user.email "you@personal.email" - 检查是否生效:
git config --local user.name(加--local确保查的是当前仓库级配置)
用 Personal Access Token 替代密码,并确保 remote 地址干净
GitHub 自 2021 年起已停用密码推送,GitLab 等平台也陆续跟进。如果你的 remote 是 https://user:password@github.com/... 这种带明文凭证的 URL,不仅不安全,Token 过期后还会报错隐晦(比如 403 却不提示 token 问题)。
- 先清理 remote 地址:
git remote set-url origin https://github.com/owner/repo.git(去掉用户名和密码) - 去 GitHub Settings → Developer settings → Personal access tokens → Generate new token,勾选
repo权限 - 下次 push 时,终端会弹出用户名和密码输入框 → 用户名填你的 GitHub 账号,密码栏粘贴刚生成的 Token
- 钥匙串会自动把这次组合存下来,下次同一仓库就不再问
(可选)用 includeIf 实现自动身份切换
如果项目目录有规律(比如公司项目全在 ~/work/ 下,个人项目在 ~/dev/ 下),可以用 Git 的 includeIf 功能让配置自动生效,不用每次进仓库手动设。
- 编辑
~/.gitconfig,加入:
path = "~/.gitconfig-work"
[includeIf "gitdir:~/dev/"]
path = "~/.gitconfig-dev"
- 新建
~/.gitconfig-work,写入公司身份:[user]<br> name = Your Company Name<br> email = your@company.com
- 新建
~/.gitconfig-dev,写入个人身份:[user]<br> name = Your Nick<br> email = you@personal.email
- 之后只要仓库路径在对应目录下,Git 就自动加载对应身份










