我已经创建了两个独立的GitHub帐户。
我也为他们生成了两个独立的SSH密钥,使用相同的设备。
当我在终端输入git config user.name
时,输出显示USERNAME2
。
我现在想在帐号1上工作,所以我输入了git config --global user.name "USERNAME1
,并为电子邮件做了同样的操作。
但我认为它没有真正切换帐户,只是重命名我的用户名或什么?我认为这是因为当我试图在帐户中创建一个新的repo时,对于所有git命令,我一直得到fatal: not a git repository (or any of the parent directories): .git
错误,这是我以前从未得到过的,当我有一个单独的帐户运行时。
我的SSH密钥在两个不同的文件夹中(对于account1,它在home dir的. SSH文件夹中,对于account2,它在home dir的.newssh文件夹中)。
我该怎么办?
我现在想在帐户1工作,所以我输入
git config --global user.name "USERNAME1"
这与远程Git服务器身份验证无关。
它只设置本地提交作者。
要使用不同的帐户,您需要不同的远程URL,每个URL设置为使用适当的ssh私钥进行远程认证。
这是用~/.ssh/config
完成的,如下所示。
Host github2
HostName github.com
User git
IdentityFile /home/me/.newssh/key2
它假设:
你有
git init myProjectFolder
,为了工作在ProjectFolder
您已经在
中设置了正确的远程URLProjectfolder
git remote add origin github2:<me>/myProject
一步一步,假设在WSL2中有一个活动的shell会话(一定要用对您更有意义的名称更改名称)
- 生成SSH密钥,每个帐户一个
cd ~/.ssh
ssh-keygen -t rsa -P "" -f account1
ssh-keygen -t rsa -P "" -f account2
注册account1。酒吧和账户。请参见"为您的GitHub帐户添加新的SSH密钥">
设置
~/.ssh/config
:
Host account1
HostName github.com
User git
IdentityFile ~/.ssh/account1
Host account2
HostName github.com
User git
IdentityFile ~/.ssh/account2
- 使用正确的URL(以及正确的帐户)克隆您的存储库
cd
git clone account1:<NameAccount1>/<Repo1>
git clone account1:<NameAccount2>/<Repo2>
(<...>
是占位符值,意味着被替换:不保留<
和>
)
- 在每个存储库中设置正确的提交授权
cd ~/<repo1>
git config user.name <NameAccount1>
git config user.email <NameAccount1@email.com> # the one registered with GitHub
cd ~/<repo2>
git config user.name <NameAccount2>
git config user.email <NameAccount2@email.com> # the one registered with GitHub
在这些步骤之后,每次提交都将使用正确的GitHub帐户完成,并推送到正确的GitHub存储库。
您只能使用一个ssh密钥,只需将pub密钥添加到两个github帐户。