具有多个 SSH 密钥的多个 github 帐户导致多个贡献者



我有2个不同的Github帐户。我已经设置了 2 个不同的 SSH 密钥。使用正确的帐户在 Github 上注册了两个密钥,并创建了一个git config文件,该文件应使用正确的凭据来处理远程存储库(即使用我的个人帐户进行个人工作,将工作帐户用于远程工作(。这是我的 git 配置文件的样子:

Host personal.github.com
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_personal
IdentitiesOnly yes
Host work.github.com
HostName github.com
PreferredAuthentications publickey
User git
IdentityFile ~/.ssh/id_rsa_work
IdentitiesOnly yes

它有效,我可以克隆和推送项目。

问题:

假设我在工作帐户中创建了一个新的远程存储库。当我在本地计算机上克隆项目时,我使用:git clone git@work.github.com:[username]/my-plan.git

然后进行一些更改,提交它们并将其推送回远程存储库。它有效,但不是在"贡献者"下显示我的工作帐户凭据,而是实际显示我的个人帐户。

如果我运行git remote -v我会得到:

origin  git@work.github.com:[username]/my-plan.git (fetch)
origin  git@work.github.com:[username]/my-plan.git (push)

我不明白为什么当关联的 SSH 密钥连接到我的工作帐户而不是我的个人帐户时会发生这种情况。我需要做什么来确保每次我回推项目时,它都来自我的工作帐户而不是个人帐户?

我认为问题不在于您的SSH密钥,github与"推送"提交的用户和"提交"更改的用户不同。

您可以使用浏览器导航到:

https://api.github.com/repos/[username]/[repo]/commits

每次提交将有

"author": {
"name": "<author1>",
"email": "<email1>",
"date": "2019-09-17T12:56:43Z"
},
"committer": {
"name": "<author2>",
"email": "<email2>",
"date": "2019-09-17T12:56:43Z"
},

如果电子邮件不同 - 这就是问题所在,您应该在本地为当前项目配置 git(git config user.email "<your email for this repo>"(。

最新更新