管理多个 Git 帐户
很多公司要求开发人员创建专用git账户来访问与工作相关的 Git 项目。从安全性和访问控制的角度来看,这很好,但对于那些希望在私人账户中处理个人项目的开发人员来说,却很麻烦。很多时候,提交操作会被误用到工作账户,反之亦然。我也经历过这种情况,所以我把我的工作笔记本电脑设置成如下状态,以便明确区分 Git 账户的使用。
先决条件
- 你应该使用基于 SSH 的 Git 访问方式,大多数开发者都会这样做。但我发现仍然有一些人使用基于 HTTP 的访问方式,每次都要输入凭据🤦♂️
- 你应该养成将办公工作区(代码文件夹)与私人工作区分开的习惯。
文件夹结构
我通常使用以下文件夹结构。这有助于我保持清晰的结构并管理多个 Git 帐户。
├── personal
│ └── workspace
│ ├── repo1
│ └── repo2
└── work
└── workspace
├── workrepo1
└── workrepo2
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>
Git 配置
这里我将默认设置git config为我的私人帐户,并git为工作关联的目录配置工作帐户。但我们也可以根据工作区的结构反过来操作。
以下是默认配置git config。/.gitconfig
[user]
name = Personal Git Account Name
email = personalemailassociatedwithpersonalgit@somedomain
上述操作将确保所有 Git 操作在您的机器上使用上述配置。
工作相关的 Git 配置
在同一行中~/.gitconfig添加以下几行。
[includeIf "gitdir:~/work/"]
path = ~/work/.gitconfig
我们使用了条件包含(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
如何同时使用两个帐户操作存储库
- 要从工作帐户克隆存储库,您需要按照以下步骤操作,因为您已经配置了
ssh-git clone git@githubwork.com:<repopath>.git - 要从私有帐户克隆存储库,您需要按照以下步骤操作,因为您已配置了
ssh-git clone git@github.com:<repopath>.git
对相应仓库的所有git操作都会确保遵循相应的配置。您可以在此自定义 Git 配置中自定义更多配置。