使用 Github 和 Gitlab

Using Github and Gitlab

我的问题

我想使用我的私人电子邮件 a@gmail.com 在 Github 上提交,并使用公司电子邮件 me@company.com 提交到我们公司的 Gitlab,而不更改每次提交的 Git 配置。因此,当我在 Github 上提交时,它会链接到我的 Github 帐户,Gitlab 也是如此。

我已经做了什么

因此我创建了两个不同的 SSH 密钥并将它们与 Github 和 Gitlab 连接。我的文件夹 ~/.ssh/ 中还有一个名为 config 的文件,其中包含:

Host github.com
    HostName github.com
    IdentityFile ~/.ssh/github
    IdentitiesOnly yes
    User KonstantinSchuette

Host gitlab.company.com
        HostName gitlab.company.com
        IdentityFile ~/.ssh/gitlab
        IdentitiesOnly yes
        User KonstantinSchuette

但是我的提交没有连接到我将密钥链接到的帐户。

我误会了什么

我认为 SSH 密钥用于在 Github 和 Gitlab 上使用不同帐户进行提交,因此它会覆盖配置。但事实并非如此。它们仅用于从不同的帐户访问不同的平台,而无需输入帐户的凭据。

解决方案

我需要为 Github 和 Gitlab 创建不同的文件夹,以便在 Github 和 Gitlab 上加载不同的配置Git同时进行实验室项目。因此只有 Github 的存储库在 Github 文件夹中,只有 Gitlab 存储库在 Gitlab 文件夹中。

我将 ~/.gitconfig 编辑为:

[includeIf "gitdir/i:~/Desktop/Github/"]
  path=.gitconfig-Github
[includeIf "gitdir/i:~/Desktop/Gitlab/"]
  path=.gitconfig-Gitlab

在与 .gitconfig 相同的目录中,我创建了 .gitconfig-Github:

[user]
name=Dewey
email=a@gmail.com

还有一个.gitconfig-Gitlab:

[user]
name=Dewey
email=me@company.com

我正在使用 VSCode,因此 includeIf 必须以 gitdir/i: 开头以关闭区分大小写。如果您不执行此步骤,则在您使用 VSCode.

时将不会加载您的配置

我在 VSCode 的问题板上找到了解决方案:https://github.com/Microsoft/vscode/issues/62921

现在一切都如我所愿。