# 前言
记录一次关于 Github 多账号 git 的配置
将仓库内容上传 AccountA
的同时上传到我的另一个账号 AccountB
# 流程
# 生成密钥
- 生成新的 SSH 密钥对(假设新密钥对的名称为
id_rsa_b
)
ssh-keygen -t ed25519 -C "your_email@example.com" -f ~/.ssh/id_rsa_b |
- 将新生成的公钥添加到 GitHub 账号 B (AccountB) 的 SSH 密钥列表中
- 打开密钥文件 (C:/Users/your_name/.ssh)
cat ~/.ssh/id_rsa_b.pub |
将里面的内容全部复制
- 登录到 GitHub 账号 B,进入
“Settings” -> “SSH and GPG keys” -> “New SSH key”
,将公钥粘贴进去并保存
# 配置本地 Git 以使用新的 SSH 密钥对
在本地创建一个配置文件(例如 config),在其中添加多个账号的 SSH 配置信息。每个账号的配置信息应该以 Host 开头,后面跟着对应的域名和密钥路径
- 创建
config
配置文件
touch ~/.ssh/config |
无需后缀
config
文件内容
# Account A
Host github.com-AccountA
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_a
# Account B
Host github.com-AccountB
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_b
Account-B
为你要切换时使用的账号名称
# 尝试添加 git 仓库
git config user.name 'AccountB' | |
git config user.email 'AccountB@mail.com' |
# Switch to account A | |
git remote set-url origin git@github.com-AccountA:usernameA/repo.git | |
# Switch to account B | |
git remote set-url origin git@github.com-AccountB:usernameB/repo.git |
AccountB
替换为你实际要切换到的账号名usernameB
替换为该账号下的用户名repo
替换为你要切换到的仓库名
最后验证远程仓库是否已成功添加
# 本地仓库情况 | |
git remote -v | |
# 全局登录情况 | |
ssh -T git@github.com-AccountB.com |
显示所有已添加的远程仓库及其对应的 URL
# git push
git init | |
git add . | |
git commit -am "first commit" | |
git remote add origin git@AccountB:usernameB/repo.git | |
git push -u origin master |
# 遇到的问题
error: remote origin already exists
这个错误表示远程仓库 "origin" 已经存在。可能原因有:
- 没有成功配置 SSH 到 GitHub 账号上
- 已经添加过该仓库
# 解决方法
- 重新配置。请确保每一步骤准确,文件配置恰当
- 删除并重新添加远程仓库
git remote remove origin | |
git remote add origin git@github.com-AccountB:usernameB/repo.git |