问题背景

当需要将代码推送到另一个 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. Settings → Developer settings → Personal access tokens → Tokens (classic)
  3. Generate new token,选择 repo 权限
  4. 推送时用 Token 作为密码

GitHub Desktop

  1. 打开 GitHub Desktop
  2. File → Options → Accounts
  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 账号,而不影响其他项目的配置。