发布于 2026-01-06 0 阅读
0

管理多个 Git 帐户

管理多个 Git 帐户

很多公司要求开发人员创建专用git账户来访问与工作相关的 Git 项目。从安全性和访问控制的角度来看,这很好,但对于那些希望在私人账户中处理个人项目的开发人员来说,却很麻烦。很多时候,提交操作会被误用到工作账户,反之亦然。我也经历过这种情况,所以我把我的工作笔记本电脑设置成如下状态,以便明确区分 Git 账户的使用。

先决条件

  • 你应该使用基于 SSH 的 Git 访问方式,大多数开发者都会这样做。但我发现仍然有一些人使用基于 HTTP 的访问方式,每次都要输入凭据🤦‍♂️
  • 你应该养成将办公工作区(代码文件夹)与私人工作区分开的习惯。

文件夹结构

我通常使用以下文件夹结构。这有助于我保持清晰的结构并管理多个 Git 帐户。

├── personal
│   └── workspace
│       ├── repo1
│       └── repo2
└── work
    └── workspace
        ├── workrepo1
        └── workrepo2
Enter fullscreen mode Exit fullscreen mode

SSH密钥

ssh请确保为每个 Git 账户创建两个不同的密钥。请参考此链接
获得密钥后,请务必按照此链接中的说明,Github使用相应的密钥配置对应的账户。 由于您生成了两个密钥,因此会有两个私钥文件。

SSH 配置

由于我们有两个不同的 SSH 密钥,我们需要进行配置才能使用它们。以下是 SSH 配置。

Host github.com
   HostName github.com
   User git
   IdentityFile ~/.ssh/<private key filename of private account>

Host <githubwork.com>    
   HostName github.com
   User git
   IdentityFile ~/.ssh/<private key filename of work account>
Enter fullscreen mode Exit fullscreen mode

Git 配置

这里我将默认设置git config为我的私人帐户,并git为工作关联的目录配置工作帐户。但我们也可以根据工作区的结构反过来操作。
以下是默认配置git config/.gitconfig

[user]
    name = Personal Git Account Name
    email = personalemailassociatedwithpersonalgit@somedomain
Enter fullscreen mode Exit fullscreen mode

上述操作将确保所有 Git 操作在您的机器上使用上述配置。

工作相关的 Git 配置

在同一行中~/.gitconfig添加以下几行。

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig
Enter fullscreen mode Exit fullscreen mode

我们使用了条件包含(Conditional Includesincludeif)。条件包含是从 Git 2.13 版本开始引入的。请确保您使用的是此版本才能使用此功能。它实际上会根据条件动态地包含 Git 仓库。在本例中,如果 Git 工作目录是 `/usr/local/ bin` ,则会使用 `/usr/ local/bin` 中的 `/usr/local/bin` 以下是此配置文件的内容。gitgitconfig~/work.gitconfig~/work/.gitconfig
~/work/.gitconfig

[user]
    name = Work Git Account Name
    email = workacountemail@domain
Enter fullscreen mode Exit fullscreen mode

如何同时使用两个帐户操作存储库

  • 要从工作帐户克隆存储库,您需要按照以下步骤操作,因为您已经配置了ssh-git clone git@githubwork.com:<repopath>.git
  • 要从私有帐户克隆存储库,您需要按照以下步骤操作,因为您已配置了ssh-git clone git@github.com:<repopath>.git

对相应仓库的所有git操作都会确保遵循相应的配置。您可以在此自定义 Git 配置中自定义更多配置。

文章来源:https://dev.to/balaaagi/managing-multiple-git-account-1ddd