我关注了指南设置我的用户名和电子邮件。然后我使用相同的命令进行验证。
git config --global user.name "<github user>"
git config --global user.name
> <github user>
但是,当我运行 git clone 时,git clone ssh://github.com/<github user>/<reponame>
git 会尝试我的本地用户名:
Cloning into '<reponame>'...
<local user name>@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
这是为什么?甚至连cat ~/.gitconfig
样子都不应该。
答案1
你的Git 用户名它被使用Git识别作者和提交者提交与你无关SSH 使用的 SSH 登录名,也不这有什么关系吗和你的GitHub 帐户。
如果您没有告诉 SSH 使用哪个登录名,它总是使用您的本地登录名作为远程登录名。
您可以使用
git clone ssh://[email protected]/<github account>/<repository>
要不就
git clone [email protected]/<github account>/<repository>
顺便说一下,当您进入存储库并单击“代码”、“本地”、“克隆”和“SSH”时,GitHub 会告诉您使用这个:
或者,您可以git
在您的SSH 配置文件,这就是我所做的:
Host github.com
User git
事实上,就我而言,我有两个不同的 GitHub 帐户,一个用于工作,一个用于个人事务,这意味着我使用两个不同的 SSH 密钥。我还经常使用端口 22 上的 SSH 被阻止的网络,因此我使用运行于ssh.github.com:443
。因此,我的 SSH 配置如下所示:
# Personal GitHub account
Host github.com-personal
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_rsa_personal
# Work GitHub account
Host github.com-work
HostName ssh.github.com
Port 443
User git
IdentityFile ~/.ssh/id_rsa_work
因此,就我而言,我会使用
git clone github.com-personal/<github user>/<reponame>
或者
git clone github.com-work/<github user>/<reponame>
取决于我使用的是个人帐户还是工作帐户。
不幸的是,我发现这个解决方案有一个小麻烦:一些 GitHub 客户端,例如GitHub 拉取请求和问题扩展Visual Studio 代码,不使用 SSH 配置来解析存储库 URI。他们认为,如果 Git SSH URI 中的主机名是github.com-personal
,那么他们也可以与该主机名上的 GitHub HTTP ReST JSON API 进行交互,但事实并非如此。因此,每次我在 Visual Studio Code 中打开我的一个项目时,我都会收到来自 GitHub Pull Requests and Issues 扩展的错误消息,告诉我无法加载 PR 和问题。
或者,它也应该可以设置credential.username
配置参数:
git config credential.username git
git
如果您未在 URI 本身中指定用户名,则将用于所有 URI。或者,您可以使用以下方式更具体:
git config credential.ssh://github.com/.username git
我还将根据需要为存储库设置我的 Git 用户名和 Git 电子邮件,即
git config user.name 'Jörg W Mittag'
git config user.email [email protected]
或者
git config user.name 'Jörg Mittag (Company Name)'
git config user.email [email protected]
我没有使用GitHub 桌面版或者GitHub 命令行工具,不过我还是出于习惯还设置了GitHub账号:
git config github.user <personal github account>
或者
git config github.user <work github account>
顺便说一句,从根本上来说,您似乎对不同名称的含义感到困惑,因此这里有一个快速复习一下:
- Git 提交者姓名(
GIT_COMMITTER_NAME
/committer.name
):提交者的可读姓名;这应该不是作为用户名,它应该是人们对您个人的称呼。 - Git 提交者电子邮件(
GIT_COMMITTER_EMAIL
/committer.email
):提交人的电子邮件地址。 - Git 作者姓名(
GIT_AUTHOR_NAME
/author.name
):人员的可读姓名创作了这些变化在提交中;这应该不是是用户名,应该是别人称呼你的名字。通常,这与提交者姓名相同,但它们可以不同,例如,如果 A 提交了 B 通过电子邮件发送给他们的代码。 - Git 作者电子邮件(
GIT_AUTHOR_EMAIL
/author.email
):收件人的电子邮件地址创作了这些变化在提交中。通常,这与提交者电子邮件相同,但它们可以不同,例如,如果 A 提交了 B 通过电子邮件发送给他们的代码。 - Git 用户名(
user.name
):用作提交者姓名和作者姓名的默认值;这应该不是作为用户名,它应该是人们对您个人的称呼。 - Git 用户电子邮件(
EMAIL
/user.email
):用作提交者电子邮件和作者电子邮件的默认值。 - 用于传输连接的登录名(
credential.username
):用作 HTTPS 身份验证的用户名或 SSH 身份验证的登录名。对于 GitHub,HTTPS 身份验证的用户名是您的 GitHub 帐户,而 SSH 身份验证的登录名始终是git
。这通常作为存储库 URI 的一部分传递,而不是作为配置选项传递。 - GitHub 帐户(可以作为 Git 配置的一部分进行配置
github.user
,但会被 Git 完全忽略):GitHub 帐户与 Git 和 SSH 完全无关。Gitgithub.*
配置文件中的整个部分都会被 Git 忽略。这仅由 GitHub 特定工具(例如 GitHub Desktop 或 GitHub CLI)使用。