git 克隆时坚持使用 ubuntu 上的用户本地用户名

git 克隆时坚持使用 ubuntu 上的用户本地用户名

我关注了指南设置我的用户名和电子邮件。然后我使用相同的命令进行验证。

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 会告诉您使用这个:

GitHub 屏幕截图显示了带有 SSH URI 的克隆对话框

或者,您可以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)使用。

相关内容