自动管理个人和工作 git 配置

2025-06-08

自动管理个人和工作 git 配置

最初发表于WyeWorks 博客

曾经有一段时间,我发现自己经常在个人电脑和工作电脑之间切换,这真的很烦人。来回切换了一段时间后,我决定只用一台电脑。

在确定了单机操作方式后,最让我恼火的是,在从工作仓库迁移到个人仓库或从个人仓库迁移到工作仓库时,必须记住切换我的 Git 用户名、邮箱和 SSH 密钥。我经常忘记切换,而且时不时地会发现工作提交的标签里竟然是我的个人邮箱,反之亦然。

在公司,大多数代码库都是私密的,但在家里,我的大部分工作都是公开的,这意味着我的工作邮箱被公开了,我对此很不满意。因此,在这篇文章中,我将分享一种让你无需再来回切换,让电脑自动完成切换的方法。

步骤 1:配置 SSH 密钥

如果您使用 SSH 与 Git 服务器(可能是 GitHub)交互,请继续阅读,亲爱的读者。否则,请跳过此步骤。(或者,更好的是:开始使用 SSH!

假设您有两对 SSH 密钥对,一个用于user@work.com,一个用于user@personal.com。您需要分别在推送、克隆或以其他方式与工作或个人仓库交互时使用相应的 SSH 密钥对。这很容易实现 - 只需创建或修改一个~/.ssh/config类似于以下内容的现有文件:

#personal
Host github.com-personal
  HostName github.com
  User personal
  IdentityFile ~/.ssh/id_rsa_personal
  PreferredAuthentications publickey

#work
Host github.com-work
  HostName github.com
  User work
  IdentityFile ~/.ssh/id_rsa_work
  PreferredAuthentications publickey
Enter fullscreen mode Exit fullscreen mode

将其替换personal为您的个人 Git 用户名和work工作相关的用户名,我们就完成了这一步。

编辑

克隆你的仓库时,你应该使用自定义的主机配置。如果你git clone git@github.com:personal/repo.git现在通常进行克隆,则应该使用git clone git@github.com-personal:personal/repo.git。如果你想在现有仓库中使用它,只需更新远程仓库即可。

第 2 步:将用户详细信息添加到工作和个人文件夹

在这一步中,我假设你已将所有工作资料~/work和个人资料分别存放在一个~/personal文件夹中。如果没有,那么你要么需要在电脑上移动一些文件,要么根据个人需求调整这一步。

在每个文件夹中,添加一个名为 的文件.gitconfig。最终您将得到一个~/work/.gitconfig文件和一个~/personal/.gitconfig文件。在每个文件中,您需要填写相应的信息。例如:

[user]
  email = user@work.com
  name = John Doe
Enter fullscreen mode Exit fullscreen mode
[user]
  email = user@personal.com
  name = John Doe
Enter fullscreen mode Exit fullscreen mode

第二步,完成了!现在让我们进入最后一步,把所有东西整合在一起。

最后一步:根据当前文件夹覆盖 git 配置

这是我们最后一步,我们将根据你正在处理的内容告诉 Git 使用不同的配置。首先,你需要创建或修改~/.gitconfig文件(如果已存在),并将其更改为如下所示:

[includeIf "gitdir:~/work/"]
    path = ~/work/.gitconfig

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

~/work/.gitconfig这告诉 Git当你位于 下的任何文件夹时加载该文件~/work,当你位于 下时加载其他配置~/personal

结论

现在,您已将 Git 配置为根据您正在处理的工作自动选择要使用的用户、电子邮件和密钥对。您无需再担心意外混淆用户名,也不必再担心在工作中泄露您的个人电子邮件,或者更糟的是,将工作电子邮件泄露给公众。

您可以进一步自定义每个文件的配置,最终为每个环境定制 Git。例如,您可以配置您的仓库来执行一些钩子,正如我在上一篇文章《使用 git hooks 改进您的日常工作流程》中解释的那样。

希望这些信息对您有所帮助。无论如何,请留言告诉我!

鏂囩珷鏉ユ簮锛�https://dev.to/fedekau/automatically-managing-personal-and-work-git-configurations-27ad
PREV
基础设施即代码:初学者的视角 Terraform 结论 资源
NEXT
Let’s code a dribble design with Vue.js & Tailwindcss (Working demo) — Part 1 of 2