Mac上同时配置公司和个人的git账号

385 阅读2分钟

学生时期多个平台都是用自己的个人邮箱,对应同一个git账号

成为社畜后,公司配的电脑需要使用公司邮箱和用户名去使用公司私服gitlab,但自己有时候也想使用GitHub咋办呢?

生成个人账号密钥配置GitHub

生成新的密钥:

ssh-keygen -t rsa -C ‘邮箱账号'

输入文件名时设置新的文件名,比如id_rsa_github

在GitHub上配置新的公钥此处就不再赘述。

配置本地私钥

在 .ssh 目录下新建 config 文件 vim config,将下面内容添加到该文件中:

#github

 Host github

 HostName github.com

 PreferredAuthentications publickey

 IdentityFile ~/.ssh/id_rsa_github

 User 个人邮箱

#gitlab

 Host gitlab

 HostName 公司gitlab网址

 PreferredAuthentications publickey

 IdentityFile ~/.ssh/id_rsa

 User 公司邮箱

ssh配置多git账号

私钥配置成功后还需要将之添加到 ssh-agent 中,下面是相关命令:

1.清除缓存
  ssh-add -D
2.添加 keys
  ssh-add ~/.ssh/id_rsa_github
  ssh-add ~/.ssh/id_rsa
3.查看 keys
  ssh-add -l  

然而ssh-agent 是一个用于存储私钥的临时性的 session 服务,也就是说当你重启之后,ssh-agent 服务也就重置了。

这里我们借助Mac的Automator实现开机自动设置ssh-agent。
打开 Automator(自动操作),选择 应用程序 -> 实用工具 –> 运行 Shell 脚本,然后在弹出框中填入秘钥配置命令:

ssh-add ~/.ssh/id_rsa_github
ssh-add ~/.ssh/id_rsa

保存后,将该应用程序添加到开机自启项:系统偏好设置->用户与群组->登录项->添加该应用程序

每次系统重启后会执行这个 Automator task,自动 ssh-add 所有的私钥。

验证

命令 ssh -T git@别名 验证是否配置成功。

ssh -T git@github.com
sssh -T git@公司gitlab地址

快速切换个人和公司git账号

通过自定义命令别名来实现快速切换用户。

在bash_profile文件或者bashrc文件中使用alias设置自定义指令。但直接将alias写在~/.bash_profile下,但很可能导致以后只要匹配这个字符串,就直接快捷到某某命令了。因此我们在~/.bashrc中进行定义。

#自定义指令
alias 指令名1='git config --global user.name 用户名1 && git config --global user.email 邮箱1 && git config user.name && git config user.email'
alias 指令名2='git config --global user.name 用户名2 && git config --global user.email 邮箱2 && git config user.name && git config user.email'

每开一次终端,要 source ~/.bashrc 环境变量才生效。而bash_profile文件是用户登陆终端的时候会自动执行的文件,我们在里面加入一行

source ~/.bashrc

但还不够

MacOS Catalina(10.15),macOS的默认终端从bash变成了zsh。
zsh加载的是 ~/.zshrc文件,而 ‘.zshrc’ 文件中并没有定义任务环境变量。

因此需要在zshrc文件最后,增加一行

source ~/.bash_profile

再重启电脑后,大功告成!

参考资料:lujiahao0708.github.io/p/5c6f02af.…