配置多个 Git 账号
当我们在公司办公时,我们需要配置公司的 Git、且需要配置自己的 Git,当你遇到这个问题时,本篇可给你提供一些帮助。
本文以配置 GitHub、Gitlab 为例,其他同理。
第一次配置 Git 的同学可以参考我的另一篇文章:本地环境Git连接GitHub
步骤
生成 SSH key
生成第一个 SSH Key
ssh-keygen -t rsa -C 'Your_GitHub_Email'
会在
~/.ssh目录下生成id_rsa和id_rsa.pub两个文件、然后将id_rsa.pub的内容添加到 GitHub 账户的 Setting 里面
接下来,我们就来生成第二个 SSH Key
ssh-keygen -t rsa -C 'Your_GitLab_Email' -f my_gitlab
注意:这次添加了
-f my_gitlab这样,~/.ssh目录下就会生成my_gitlab和my_gitlab.pub文件,将my_gitlab.pub的内容添加到 gitlab 账户的 Setting 里面
将私钥配置到 Git 中
ssh-add id_rsa # 添加第一个账户 github
ssh-add my_gitlab # 添加第二个账户 gitlab
配置 config 文件
打开~/.ssh 文件,然后生成 config 文件,配置内容如下:
# config文件
# GitHub
Host xxx # 这里注意这个xxx,之后会使用到
HostName github.com # 这里是托管平台的域名
identityFile ~/.ssh/id_rsa
# Gitlab
Host yyyy
HostName gitlab.com
identityFile ~/.ssh/my_gitlab
测试 ssh-key 是否连通
ssh -T git@xxx # xxx为config 文件配置的Host
ssh -T git@yyyy # yyyy 同理
Hi 用户名! You've successfully authenticated, but GitHub does not provide shell access.如果出现这个就表示成功了,还剩最后两个步骤
自动切换 GitHub 账户
git clone git@xxx:GitHub用户名/仓库名.git
注意:这里与常规的 clone 不一样,需要修改 github.com 为 xxx、也就是之前配置到 Host、另一个账户同理、或者使用
gh
之后push可能会出现没权限问题,再执行一下
ssh-add xxx就ok了、但是该操作重启之后会失效,可以通过配置~/.zshrc解决
# 多个 git 添加权限
eval "$(ssh-agent -s)" >/dev/null 2>&1
ssh-add ~/.ssh/id_rsa >/dev/null 2>&1
ssh-add ~/.ssh/my_gitlab >/dev/null 2>&1
id_rsa、my_gitlab为~/.ssh文件夹下ssh-keygen生成的文件名字
最后在仓库中修改提交的时候需要配置信息
# 在各仓库下
git config user.name "用户名"
git config user.email "邮箱号"
全局配置(建议全局配置主 Git 账户)
git config --global user.name "用户名"
git config --global user.email "邮箱号"
之后,就可以使用多个 Git 账户了。