如何在本地项目中使用不同Git账号推送代码
问题背景
当需要将代码推送到另一个 GitHub 账号的仓库时,遇到权限问题:
1 | remote: Permission to <USERNAME>/<REPO>.git denied to <WRONG-USER>. |
本地 Git 认证的账号是 <WRONG-USER>
,但仓库属于 <OWNER>
,账号无权限,因此推送被拒绝(403 错误)。
解决方案
适用场景
在本地机器上有全局 Git 配置(比如全局账号 A),但某个项目需要用另一个账号 B 来推送代码。为了避免影响全局配置,只在该项目目录下单独设置用户信息和远程仓库 URL,并清理掉当前项目的凭据缓存。这样既不需要退出全局账号,也不会影响其他项目的推送。
也就是说:
- 全局账号继续用于大多数项目;
- 本项目账号单独设置,用来推送这个仓库;
- 两者互不干扰。
检查当前 Git 配置
1 | # 查看当前用户信息 |
设置当前项目的用户信息
1 | # 设置新账号的用户信息(只影响当前项目) |
清除当前项目的凭据缓存
1 | # 清除当前项目的凭据缓存(不影响全局) |
更新远程仓库 URL
1 | # 删除旧的远程仓库配置 |
添加和提交代码
1 | # 添加所有文件 |
推送代码
1 | # 推送到远程仓库 |
认证方式
用户名密码认证
- 推送时会提示输入用户名和密码
- 输入新 GitHub 账号的用户名和密码
Personal Access Token
- 登录新 GitHub 账号
Settings
→Developer settings
→Personal access tokens
→Tokens (classic)
Generate new token
,选择repo
权限- 推送时用 Token 作为密码
GitHub Desktop
- 打开 GitHub Desktop
File
→Options
→Accounts
- 点击当前账号旁边的
Sign Out
- 重新登录新账号
- 在 GitHub Desktop 中推送
注意事项
只修改当前项目
- 使用
git config
(不带--global
) 只影响当前项目 - 使用
git config --global
会影响所有项目 - 其他项目的 Git 配置不会受影响
凭据管理
- 清除凭据缓存后,Git 会重新要求认证
- 确保使用正确的 GitHub 账号认证
远程仓库 URL
- 建议在 URL 中包含用户名:
https://yilandh@github.com/yilandh/LibreTV.git
- 这样可以明确指定使用哪个账号
成功标志
推送成功后,代码会出现在新 GitHub 账号的仓库中:
- 仓库地址:
https://github.com/yilandh/LibreTV
- 所有文件都已上传
- 提交历史完整
总结
关键步骤:
- ✅ 设置当前项目的用户信息
- ✅ 清除凭据缓存
- ✅ 更新远程仓库 URL
- ✅ 重新认证并推送
这样就能成功将代码推送到另一个 GitHub 账号,而不影响其他项目的配置。
评论