以gitea+github为例:
范例邮箱账号:
第一步:清除全局配置
如果你已经全局配置过git账号,那么一定要先把全局的配置给清除掉。
可执行以下命令查看:
git config --global --list // 看一下是否配置过user.name 和 user.email
git config --global --unset user.name // 清楚全局用户名
git config --global --unset user.email // 清楚全局邮箱
第二步:删除已经生成过的密钥
如果你已经全局配置过git账号,那么你一定生成过全局ssh密钥。 这个密钥通常在 C:\Users\用户名.ssh 目录下。
第三步:生成新的密钥
因为你需要关联多个账号,所以同理也需要生成多个ssh密钥。【注意:需在.ssh目录下操作,否则会生成的密钥默认会存放至system的位置】
1、生成gitea的密钥
ssh-keygen -t rsa -C "susu.gitea@xxxx.com" -f "id_rsa_gitea"// 根据该邮箱生成新的SSH密钥
在此步骤可以给key设置密码,建议设置。
2、生成github的密钥
操作步骤和上面的一样,不再赘述。
为了区分,github的密钥名称我设置为: id_rsa_github 对应的gitee仓库:susu.github@xxx.com
第四步:添加公钥到远端仓库
密钥生成后,会在.ssh目录下,生成两个文件 id_rsa_gitea
(私钥)和 id_rsa_gitea.pub
(公钥)。将公钥添加到gitea后台。
第五步:配置密钥管理文件
为了更方便的管理多个git账号,我们需要一个config的配置文件,用来集中配置。
在.ssh目录下,创建config文件。
vim ~/.ssh/config
配置如下
Host gitea
HostName gitea.mygit.com
User susu
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_gitea
Port 2222
Host github
HostName github.com
User susu
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_github
配置解释:
Host ---------远端仓库地址或IP(不支持配置端口)
HostName ---------远端仓库的别名,简写 例如: 配置后 git@gitea.com 可以写为 git@gitea
User ---------仓库上的用户名
PreferredAuthentications ---------强制使用Publickey验证
IdentityFile ---------指向仓库私钥的绝对路径
Port ---------远端仓库端口,一般不需要设置,特殊情况除外
第六步:测试一下仓库连接
测试命令:
ssh -T git@gitea [第五步的Host配置过的简写] 或者 ssh -T git@gitea.com [全拼]
ssh -T git@github [第五步的Host配置过的简写] 或者 ssh -T git@github.com [全拼]
第七步:单独指向设置
因为git分为 System > Global > Local 三级。 分别为:系统级、全局、仓库级。
如果没有进行此步设置,你可能会遇到push代码时, 提交的用户名变成你的系统主机名。
不要慌张,
这里需要你单独设置一下。为什么呢? 还记得第一步的时候,我们清除了global的配置吗,也就意味着,后面的配置我们不上升至全局,而只针对具体项目。
所以,我们要对每个仓库,单独配置用户名信息。
我需要以仓库级(local) 设置一下当前仓库的git相关配置:
git config --local user.name "susu"
git config --local user.email "susu.gitea@xxx.com"
其他仓库也设置其对应的git账户信息。
DONE:恭喜你!至此你已经完成了git多账号配置的全部流程!
此时,你的git账号已经完全独立互不干扰,你可以通过不同的git账号,在不同的仓库pull或者push了!!!
评论 (0)