配置多 Git Remote 仓库的 SSH ,Git 用户和邮箱自动切换
在开发中,我们经常需要同时使用多个 Git 远程仓库来管理代码,这些仓库可能 Github 仓库以及 Gitee 的仓库。在这些仓库中,为了保障代码的安全性和可追溯性,我们通常使用 SSH 协议来进行认证。
本文将介绍如何配置多个 Git 远程仓库的 SSH 认证,并根据文件路径自动选择相应的 Git 用户和 Git 邮箱。
配置 SSH Key
在添加远程仓库时,我们可以使用 SSH 协议来进行连接。
- 生成 SSH 密钥
我们可以使用 ssh-keygen
命令生成 SSH 密钥,如果已经生成过 SSH 密钥,可以跳过这一步。
ssh-keygen -t rsa -b 4096 -C "me@brianyao.tech"
- 将 SSH 公钥添加到远程仓库
在添加远程仓库时,我们可以将生成的 SSH 公钥添加到远程仓库的设置中,这样就可以使用 SSH 协议连接远程仓库。具体方法可以 Github 或 Gitlab 这类的文档。
- 配置 SSH
我们需要在本地配置 SSH,以便 Git 可以使用 SSH 协议连接远程仓库。可以通过编辑 ~/.ssh/config
文件来配置 SSH。
下面是一个示例配置:
# GitHub
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
# Gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitee
上面的配置中,我们为 GitHub 和 Gitee 配置了 SSH。其中,Host
是我们为远程仓库指定的别名,HostName
是远程仓库的地址,IdentityFile
是 SSH 密钥的路径。
4.用 ssh 命令分别测试连通性。
ssh -T git@github.com
ssh -T git@gitee.com
配置 Git
接下来,我们需要为每个 Git 仓库配置 Git 用户和 Git 邮箱。我们可以使用以下命令来配置 Git 用户和 Git 邮箱:
git config --global user.name "Brian"
git config --global user.email "me@brianyao.tech"
这些命令将全局设置 Git 用户和 Git 邮箱,如果我们需要为特定的 Git 仓库设置不同的 Git 用户和 Git 邮箱,可以使用以下命令:
# /path/to/repository 为仓库路径
cd /path/to/repository
git config user.name "Brian Yao"
git config user.email "me@brianyao.tech"
配置 Git 远程仓库
现在,我们已经为每个 Git 仓库配置了 SSH Key、Git 用户和 Git 邮箱。接下来,我们需要为每个 Git 仓库配置远程仓库的地址和名称。我们可以使用以下命令来添加远程仓库:
# /path/to/repository 为仓库路径
cd /path/to/repository
git remote add origin git@github.com:username/repo.git
其中,origin
是远程仓库的名称,git@github.com:username/repo.git
是远程仓库的 SSH 地址。
自动选择 Git 用户和 Git 邮箱
在我们使用多个 Git 远程仓库时,通常需要使用不同的 Git 用户和 Git 邮箱来进行代码提交。为了方便起见,我们可以根据文件路径来自动选择相应的 Git 用户和 Git 邮箱。
假设我们将 Github 项目放在 github
文件夹下,将 Gitee 项目放在 gitee
文件夹下。我们可以使用以下方式来自动选择相应的 Git 用户和 Git 邮箱:
使用 includeIf
功能,我们可以在 ~/.gitconfig
文件中为不同的文件夹路径配置不同的 Git 用户和 Git 邮箱。例如,我们可以添加以下配置:
[user]
name = Brian
email = me@brianyao.tech
[includeIf "gitdir:~/github/"]
path = ~/.gitconfig-github
[includeIf "gitdir:~/gitee/"]
path = ~/.gitconfig-gitee
其中,[user]
部分是全局的 Git 用户和 Git 邮箱配置,[includeIf]
部分用于针对不同的文件夹路径进行 Git 用户和 Git 邮箱配置。在上述例子中,~/.gitconfig-github
和 ~/.gitconfig-gitee
文件中分别包含了 Github 和 Gitee 项目的 Git 用户和 Git 邮箱配置。
在 ~/.gitconfig-github
中,我们可以添加以下配置:
[user]
name = Brian
email = brian-github@xxx.com
这将覆盖全局的 Git 用户和 Git 邮箱配置,并将 Github 项目的代码提交到指定的 Git 用户和 Git 邮箱。
在 ~/.gitconfig-gitee
中,我们可以添加以下配置:
[user]
name = Brian
email = brian-gitee@xxx.com
这将覆盖全局的 Git 用户和 Git 邮箱配置,并将 Gitee 项目的代码提交到指定的 Git 用户和 Git 邮箱。
通过使用 includeIf
功能,我们可以将不同的 Git 用户和 Git 邮箱配置分离到不同的配置文件中,从而提高配置的可维护性和可扩展性。并且使用 includeIf
功能的方式更加轻量级,不会对 Git 的性能产生影响。
注意:上文配置中
gitdir:~/gitee/
,不要有空格。
最后
通过本文的介绍,相信你已经了解了如何在开发过程中使用多个 Git 远程仓库,为每个仓库配置不同的 SSH 密钥,并且根据文件路径自动切换 Git 用户和 Git 邮箱。 希望本篇能帮助你提高开发效率,以及更好的使用 Git。
转载自:https://juejin.cn/post/7206701761683046458