跳到主要内容

Mac 上配置多 git 账户

1. 清空默认全局的 username 和 email(没有的话可以省略)

  • 查看查看已配置的git列表
git config --list
  • 清空默认的用户名和邮箱
git config --global --unset user.name
git config --global --unset user.email

2. 给不同的git账户生成ssh-key:比方说一个公司账号,一个个人账号

  • git生成ssh-key,默认如果不设置名字的话就是id_rsa
//输入后按enter键
ssh-keygen -t rsa -C "xxx@126.com"

如有以下内容输出,则意味着生成密钥成功

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/james/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/xxx/.ssh/id_rsa.
Your public key has been saved in /Users/xxx/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:rwtxjGTJPoV9Mg8lFSf8D4X6jFexWVXKOMRaVyo+RO8 xxx@126.com
The key's randomart image is:
+---[RSA 3072]----+
|       .o=o+. .*|
|     . + o.=+++o.|
|      * * .==o== |
|     + + *ooo++  |
|      = S .+o+E  |
|       + .. +..  |
|     .   ..     |
|       . .       |
|        o.       |
+----[SHA256]-----+

  • 个人的git账号生成ssh-key,设置路径成id_rsa_xxx@163.com,和之前生成的那个区分开来就行

//输入自定义的rsa名字到自己的邮箱上去
ssh-keygen -t rsa -f ~/.ssh/id_rsa_xxx@163.com -C "xxx@163.com"
//后面的一样的...

3. 给他们分别添加到ssh-agent信任列表

  • 添加到信任列表
ssh-add ~/.ssh/id_rsa

这里可能会遇到Error比如:

Could not open a connection to your authentication agent.

这时候需要先输入

ssh-agent bash

重复上面 3.1(添加到信任列表)的操作,返回Identity added就是成功了

ssh-add ~/.ssh/id_rsa
//返回这个就表示添加成功了
Identitiy added: ~/.ssh/id_rsa
  • 再次添加另一个到信任列表
ssh-add ~/.ssh/id_rsa_xxx@163.com
//返回这个就表示添加成功了
Identitiy added: ~/.ssh/id_rsa_xxx@163.com

4. 添加公钥到git账户中

  • 复制公钥,然后粘贴到git网站的公钥中去
pbcopy < ~/.ssh/id_rsa.pub
//pbcopy < ~/.ssh/id_rsa_xxx@163.com.pub

5. 在config文件配置多个ssh-key

  • 打开目录,看看有没有config文件,没有的话新建一个
cd ~/.ssh/ && ls
  • 分别配置公司和自己的ssh-key
规则
Host主机随意写,自己能识别就行
Hostname主机名必须写正确,是你的git公有地址,比方说码云:gitee.com
IdentityFile身份文件你的rsa具体路径地址
User用户可随意写,建议使用Host的前面部分,后面具体clone操作都会用到这个user

config文件内容如下:

# 126
Host 126.github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa
User 126
 
# 163
Host 163.github.com
Hostname github.com
IdentityFile ~/.ssh/id_rsa_xxx@163.com
User 163

6. 测试连接

测试公司git账户连接:如果单个账户情况一般就是ssh -T git@xxx,如果配置了config,那么可以这样测试:ssh -T git@{config里面的user}.xxx主机名

ssh -T git@126.github.com
  • 连接成功
Hi xxx! You've successfully authenticated.but GitHub does not provide shell acess
  • 测试自己的,并连接成功
ssh -T git@163.github.com

# Hi xxx! You've successfully authenticated.but GitHub.COM does not provide shell acess

到这一步为止,基本上后面能欢快的玩耍了

7. clone and push

//到自己工作的目录,准备下载个工程下来
cd ~/xxx/projects/
 
//原本单个账户的情况
git clone git@github.com:xxx/TestAndroid.git

//设置多个账户和config后
git clone git@gmail.github.com:xxx/demo.git

//.....done
//前往具体的工程目录
cd demo
//添加、提交,push等~~~
git add .
git pull
git commit -m "test commit"
git push
//OK啦

参考链接