我希望能够在我的计算机上为不同的存储库使用不同的 GitHub 帐户。
但是当我尝试从第二个帐户克隆私人存储库时,出现此错误:
$ git clone git@githubpersonal:2nd-github-account-username/redacted.git
Cloning into 'redacted'...
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
我已经~/.ssh/config
为我的第二个 GitHub 帐户设置了 SSH 密钥,即id_rsa_personal
。id_rsa
是另一个 GitHub 帐户使用的,并且它可以正常工作。
Host githubpersonal
Hostname github.com
User git
IdentityFile ~/.ssh/id_rsa_personal
到目前为止我尝试过的
一开始我以为可能是我的账户与user.name
and不匹配导致的问题。所以我添加了user.email
~/.gitconfig
[includeIf "gitdir:~/projects/"]
path = ~/projects/.gitconfig
...并~/projects/.gitconfig
使用其他姓名和电子邮件创建了一个。但不起作用。
然后我读到你需要在一个现有的 git 存储库中才能使 includeIf 工作,这在你克隆存储库之前没有意义,所以我只是切换了我的全局 gitconfig:
$ git config --global user.name "<2nd-github-account-username>"
$ git config --global user.email "<2nd-github-account-email>@gmail.com"
仍然没有运气。git config --get user.email
并user.name
显示预期值。
我不知道从这里还能看到什么。
答案1
如果指定的密钥对不被接受,请尝试启用该IdentitiesOnly
选项。客户端可能使用了来自 ssh-agent 的错误密钥。
测试使用ssh githubpersonal
——确保服务器使用预期的 GitHub 帐户名来迎接您。
这些user.*
设置不用于身份验证。Git 协议本身没有身份验证,只有 SSH(或 HTTPS)提供的身份验证。
答案2
我将为每个帐户创建 PAT 令牌,并按照以下语法克隆 repo。
git clone https://<你的用户名>:<你的 PAT 令牌>@<完整路径.git>
如果您想按照帐户所有者管理 git repo,请在 ~/.ssh/config' 中设置 ssh 密钥或按照答案 -> user1686