开发环境配置多个 Git 仓库

122 阅读2分钟

前言

  • 本地开发环境中经常会碰到连接多个 Git 仓库的情况,比如使用 Github,Gitlab,Coding 等,也可能会碰到需要连接多个相同类型如 Gitlab 仓库等
  • 如果使用默认 Git 配置,只能连接一个仓库切换到其他仓库每次 PR 都需要手动切换比较麻烦,下面给给出一种全局配置,对远程仓库类型透明,减少手动切换的麻烦
  • 以 Windows 为例,其他操作系统类似

1.生成 ssh key

  • 按照 Git 约定使用邮箱作用户,为每个需要连接的 Git 仓库生成 ssh key
  • ssh key 常用算法有 RSA,ED25519等,这里以当下最常用的 RSA 为例:
ssh-keygen -t rsa -C "your_email@example.com"
  • 按照提示,建议为每个 key 文件使用别名,便于维护区分
  • 将生成的公钥配置到仓库的 ssh 秘钥中

2.配置多 git 账户

  • 在 ./ssh 目录下创建 config 文件
  • 为每一个 Git 仓库编辑连接信息,模板为:
Host 仓库别名
HostName 仓库域名
PreferredAuthentications 验证方式,默认为 publickey
IdentityFile 校验私钥文件名,按照如上建议使用别名便于区分
  • 示例如下:
# gitlab1
Host gitlab.xxx.com.cn
HostName gitlab.xxx.com.cn
PreferredAuthentications publickey
IdentityFile ./gitlab1_id_rsa
# gitlab2
Host gitlab2.xxx.com.cn
HostName gitlab2.xxx.com.cn
PreferredAuthentications publickey
IdentityFile ./gitlab2_id_rsa
# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ./gitee_id_rsa

3.验证连接

  • 验证各 Git 仓库是否配置正确,连接正常
ssh -T git@仓库服务器域名
  • 比如 Gitlab 连接成功后返回Welcome to Gitlab, @xxx

4.主机验证

  • config 文件目录下会生成 known_hosts 文件,将仓库已连通的 ip 地址和 公钥添加到已知主机列表中
HostName(对应 config 文件中的配置),ip 算法摘要名称 host-key
  • 首次连接会由 Git 发出确认是否将服务器连接信息保存到本地操作系统,确认后会将主机 ip 和指纹添加到已知主机列表,后续连接可以确保用户连接到合法服务器,避免中间人攻击
  • 如果仓库重装、迁移或定期更新公钥的话,就需要重新建立连接,删除已有主机信息:
ssh-keygen -R hostname or ip