你在公司电脑上用 Git 克隆了一个仓库,结果提交记录里显示的是前同事的用户名?或者在家写个人项目,一 push 就弹出权限错误,提示「Authentication failed」?别急,这不是 Git 坏了,而是本地 Git 配置的账号没换过来。
为什么克隆仓库会「记住」旧账号?
Git 本身不存密码,但会记两样东西:全局的 user.name 和 user.email。这些信息被写进提交记录的 author 字段,GitHub、GitLab 等平台正是靠这个 email 匹配你的账户头像和权限。你 clone 下来的仓库,用的还是上次配置的账号——哪怕你压根没动过它。
查一查当前用的是谁
打开终端,进任意目录,执行:
git config --global user.name
git config --global user.email如果输出是「zhangsan」和「zhangsan@company.com」,但你现在想用「lisi」提交个人项目,就得改。
改法分两种:全局改 or 项目单独改
✅ 推荐做法:按项目设账号(避免公司项目和个人项目混用)
进到你要操作的仓库目录,比如:cd ~/my-personal-blog,然后执行:
git config user.name "李四"
git config user.email "lisi@gmail.com"注意:这里没加 --global,所以只影响当前这个文件夹下的仓库。再用 git config user.name 查,就能看到刚设的值。
顺便解决「push 报错:Permission denied」
账号名和邮箱只是提交记录的「署名」,真正决定能不能 push 的是 SSH 密钥或 HTTPS 凭据。如果你用的是 HTTPS 地址(比如 https://github.com/xxx/repo.git),系统可能缓存了旧账号的密码或 token。
Mac 用户清缓存:
git credential reject
protocol=https
host=github.com
[press Enter twice]Windows 用户打开「凭据管理器」→「Windows 凭据」→ 找到 github.com 相关条目删掉;Linux 用户若用了 git-credential-libsecret,可运行 git credential reject < /dev/null。
小技巧:快速确认当前仓库用的哪套配置
在仓库根目录下执行:
git config --get-regexp "^user\."它会同时列出 local(当前项目)和 global(全局)设置,local 优先级更高,一眼就能看出实际生效的是哪个。
下次 clone 新仓库前,顺手进目录 run 两行 config,就再也不会出现「提交人不是我」的尴尬了。