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

一台笔记本电脑上运行多个 GitHub 帐户

一台笔记本电脑上运行多个 GitHub 帐户

想象一下以下情况:

  • 你只有一台笔记本电脑
  • 您拥有自己的 GitHub 帐户
  • 你的雇主也将代码存储在 GitHub 上。
  • 你需要将个人代码提交到个人代码仓库,同时也要将工作代码提交到雇主的代码仓库。
  • 您无法通过个人帐户执行此操作,但又不想创建一个额外的帐户(使用公司邮箱)。

这种情况该怎么办?有一种方法,你可以配置你的笔记本电脑,使其使用工作凭据提交到工作存储库,使用你的个人凭据提交到个人存储库。

该解决方案基于以下两个方面:

  • 修正 SSH 配置
  • git URL 重写

这种方法的主要优点在于无需任何额外工作即可正确运行。您无需更改远程 URL 或记住以不同的方式克隆文件。第二部分(URL 重写)会自动处理这些。

首先,我们来修正一下 .ssh 配置。假设你有两个 SSH 密钥,一个是你的个人密钥(github_personal),另一个是你的工作密钥(github_work)。关于如何创建 SSH 密钥,你可以参考GitHub 文档

~/.ssh/config

Host github.com
  HostName github.com
  User git
  IdentityFile ~/.ssh/github_personal

# Work GitHub
Host github-work
  HostName github.com
  User git
  IdentityFile ~/.ssh/github_work

Host *
  AddKeysToAgent yes
Enter fullscreen mode Exit fullscreen mode

这两个配置使用了相同的用户和域,但我们稍后再处理这个问题。接下来是全局 Git 配置。

~/.gitconfig

这里我们需要添加我们的默认姓名和电子邮件地址(即我们在创建个人 SSH 帐户时使用的姓名和电子邮件地址)。

[user]
    name = My Name
    email = personal@personal.email

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

[url "github-work:work-github-org-name/"]
    insteadOf = git@github.com:work-github-org-name/
Enter fullscreen mode Exit fullscreen mode

这里发生了什么?首先,设置我们的默认名称和电子邮件。其次,我们指定使用本地.gitconfig文件来管理所有通过掩码定位的仓库~/path/work_dir/。最后,将(GitHub 的默认帐户)替换为我们在github.com设置的配置文件github-work.ssh/config

最后一部分是.gitconfig对我们所有工作仓库的本地配置进行修改:

~/path/work_dir/.gitconfig
很简单——只需将你的电子邮件地址替换为你的公司电子邮件地址即可。

[user]
    email = work@work.email
Enter fullscreen mode Exit fullscreen mode

就是这样!只要你把所有工作仓库都放在~/path/work_dir/某个地方,把个人文件放在别的地方,git 在向服务器执行 pull/clone/push 操作时就会使用正确的 SSH 密钥,并且还会将正确的电子邮件地址附加到你所有的提交中。

如何检查?通过 SSH 克隆仓库,切换到该文件夹​​并执行git config --get user.email

文章来源:https://dev.to/osipovsimon/multiple-github-accounts-on-one-laptop-2dmg