技巧: Git 多账户工作技巧

多个账户身份提交修改,如何灵活切换,谈点儿心得。

有多个私有库要提交,每个私有库用的不同的秘钥,即使用多套 RSA 秘钥进行提交。
例如:

  • 工作私有库
  • github
  • 其他私有库(比如 aliyun code)

这个时候就要频繁切换,这里有一些技巧。

生成秘钥

生成秘钥的代码如下: (不多解释了)

1
ssh-keygen -t rsa -C "邮件地址" -f ~/.ssh/WizardMerlin-GitHub

一路默认即可。但是如果生成秘钥时你设置打开私钥的密码,那么之后你切换私钥也需要输入密码

执行完毕生层文件如下: (.pub是公钥,这个要上传到服务器上)

上传到服务器上之后,类似 ssh -T git@github.com 会反馈给你信息。

当然你也可以借助 ssh-add -l 查看当前是否设定了 ssh key:

多账户

如果单一账户还好,多个账户之间怎么办?

先要设置多个秘钥,即给不同秘钥起名字,之后通过 ssh-add 的相关命令进行切换。

配置代理

即给 ssh-key 私钥起名字,一般是在 ~/.ssh目录下建立 config 文件,然后代码类似下面:

1
2
3
4
5
6
7
8
# 每一个账户/ssh key 都要配置这么一段代码
Host WizardMerlin-GitHub
HostName github.com
User WizardMerlin
PreferredAuthentications publickey
IdentityFile /Users/merlin/.ssh/WizardMerlin-GitHub
UseKeychain yes
AddKeysToAgent yes
  • Host 对应上传时指定的服务器,即git@github.com中的github.com部分
  • HostName 是 Host 的标识,一般写服务器域名(后者你用Host写也可以)
  • User 一般写你的邮箱(或者你 git config 根据项目,或者全局配置过了)
  • IdentityFile 写私钥位置
  • 其他照搬(自己去理解,说的很明白了)

指定代理

一般可以 ssh-add 多个代理,然后根据不同的项目选择不同的代理

但是我习惯于,一次任务,只添加一个代理,用完之后删除。 下面细说。

查看当前指定了哪个秘钥: (通常一个秘钥对应一个地址的私有库)

1
2
# 查看当前是否指定了 ssh key
$ ssh-add -l

如果输出 The agent has no identities.则表示没有代理。

可以自己添加:

1
ssh-add ~/.ssh/xxxx

可以添加多个,然后给上传的项目指定 Host 。例如:

1
2
3
4
5
# 多个账户
git remote add test git@刚配置的Host:用户名/库名.git

# 单账户
git@github.com:用户名/库名.git

形象点儿:

1
git@github.com:WizardMerlin/wizardmerlin.github.io.git

意思说,我的这个库,以后就用这个 key 了。

当然也可以不为库指定代理,我随意,我习惯于当前只专注于一件事儿:

每次只添加一个代理,为当前的任务提交;之后清除在做其他任务,再添加其他key。

清除代理使用如下命令:

1
2
## 清理代理
$ ssh-add -D

也可以设置一下快捷键:(alias)

库的数目有限的话,建议还是为库指定好代理,特别是 github 。

注意

  • 如果你生成 ssh-key pair的时候使用了密码才能访问私钥,那么ssh-add也要输入密码
  • 可以使用 source-tree 这种工具端,来自动配置;只是:
    • 你的库必须掌控在 source tree 工具下,提交等操作,这样才能使用它配置的库
    • 如果你给私钥设置了密码,那么它的一些列根据具体库自动切换操作,全部失效

SourceTree 长这样:(配置太简单不说了,注意别设置私钥密码哦)

文章目录
  1. 1. 生成秘钥
  2. 2. 多账户
    1. 2.1. 配置代理
    2. 2.2. 指定代理
  3. 3. 注意
|