问题背景

当需要将代码推送到另一个 GitHub 账号的仓库时,遇到权限问题:

1
2
remote: Permission to <USERNAME>/<REPO>.git denied to <WRONG-USER>.
fatal: unable to access 'https://github.com/<USERNAME>/<REPO>.git/': The requested URL returned error: 403

本地 Git 认证的账号是 <WRONG-USER>,但仓库属于 <OWNER>,账号无权限,因此推送被拒绝(403 错误)。

解决方案

适用场景

在本地机器上有全局 Git 配置(比如全局账号 A),但某个项目需要用另一个账号 B 来推送代码。为了避免影响全局配置,只在该项目目录下单独设置用户信息和远程仓库 URL,并清理掉当前项目的凭据缓存。这样既不需要退出全局账号,也不会影响其他项目的推送。

也就是说:

  • 全局账号继续用于大多数项目;
  • 本项目账号单独设置,用来推送这个仓库;
  • 两者互不干扰。

检查当前 Git 配置

1
2
3
4
5
6
# 查看当前用户信息
git config user.name
git config user.email

# 查看远程仓库配置
git remote -v

设置当前项目的用户信息

1
2
3
4
5
6
7
# 设置新账号的用户信息(只影响当前项目)
git config user.name "github-username"
git config user.email "github-email"

# 验证设置
git config user.name
git config user.email

清除当前项目的凭据缓存

1
2
# 清除当前项目的凭据缓存(不影响全局)
git config --unset credential.helper

更新远程仓库 URL

1
2
3
4
5
6
7
8
9
10
11
# 删除旧的远程仓库配置
git remote remove origin

# 添加新的远程仓库(用占位符代替用户名)
git remote add origin https://<USERNAME>@github.com/<USERNAME>/LibreTV.git

# 或者直接更新URL
git remote set-url origin https://<USERNAME>@github.com/<USERNAME>/LibreTV.git

# 验证远程仓库配置
git remote -v

添加和提交代码

1
2
3
4
5
# 添加所有文件
git add .

# 提交代码
git commit -m "修复版本: 基于LibreSpark/LibreTV的修复和优化"

推送代码

1
2
# 推送到远程仓库
git push -u origin main

认证方式

用户名密码认证

  • 推送时会提示输入用户名和密码
  • 输入新 GitHub 账号的用户名和密码

Personal Access Token

  1. 登录新 GitHub 账号
  2. SettingsDeveloper settingsPersonal access tokensTokens (classic)
  3. Generate new token,选择 repo 权限
  4. 推送时用 Token 作为密码

GitHub Desktop

  1. 打开 GitHub Desktop
  2. FileOptionsAccounts
  3. 点击当前账号旁边的 Sign Out
  4. 重新登录新账号
  5. 在 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
  • 所有文件都已上传
  • 提交历史完整

总结

关键步骤:

  1. ✅ 设置当前项目的用户信息
  2. ✅ 清除凭据缓存
  3. ✅ 更新远程仓库 URL
  4. ✅ 重新认证并推送

这样就能成功将代码推送到另一个 GitHub 账号,而不影响其他项目的配置。