到目前为止我尝试过的

到目前为止我尝试过的

我希望能够在我的计算机上为不同的存储库使用不同的 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_personalid_rsa是另一个 GitHub 帐户使用的,并且它可以正常工作。

Host githubpersonal
    Hostname github.com
    User git
    IdentityFile ~/.ssh/id_rsa_personal

到目前为止我尝试过的

一开始我以为可能是我的账户与user.nameand不匹配导致的问题。所以我添加了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.emailuser.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

相关内容