之前做自己的项目,上传github之后,再更新公司项目,发现公司项目里的git账号变成私人的了。git管理虽然很高级,但是配置真的伤死脑筋,为了同时使用2个账号,也折腾了一番。
git使用的是SSH加密协议,github网站里用户setting中需要配置相应的SSH keys,这些keys是在C:\Users\Administrator.ssh下管理的。如果需要管理2个账户,一般要生成2套SSH key。
如何生成SSH key
- 在.ssh文件夹下打开git Bash,输入下面指令生成第一个SSH key,之后连敲3次回车就可以生成默认的key了。
ssh-keygen -t rsa -C "a1@email.com"
- 生成第二个key时,使用另外一个邮箱,跟生成第一个Key有点区别,在输入保存名称时,要自主命名一下。
ssh-keygen -t rsa -C "a2@email.com"
......
Enter file in which to save the key (/Users/Administrator/.ssh/id_rsa):id_rsa_2
配置config文件
新建一个config文件,内容编辑如下:
#账号1配置(a1@email.com)
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa
#账号2配置(a2@email.com)
Host github
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_2
修改github中SSH keys配置
在github网站里用户setting中,将id_rsa_2的内容拷贝到新建的SSH keys中。到此其实就可以了。以下为将github上的项目克隆到本地。
git clone git@github.com:a2/projectName.git //a2是账户2的用户名
TortoiseGit设置
如果想用TortoiseGit来管理git,还需要继续配置。
TortoiseGit使用的是扩展名为ppk的密钥,而不是ssh-keygen生成的rsa密钥。因此需要用到TortoiseGit的putty key generator工具来生成适用于TortoiseGit的ppk密钥。
使用putty key generator可以生成成套的适用git的rsa密钥和适用于TortoiseGit的ppk密钥,这里只用上面已生成的rsa密钥来生成ppk密钥
将刚才生成的id_rsa_2引入,生成ppk密钥,还存在.ssh中。在刚才从git上克隆到本地的项目中打开TortoiseGit的setting按下图配置。
基本到这步也应该可以了,但是我又遇到一个问题,就是在push代码的时候一直报错:error: cannot spawn C:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe: No such file or directory fatal: unable to fork
发现是因为我的TortoiseGit是安装在D盘的,所以找不到。仍然要改setting中的配置,但是只改路径时,怎么都应用保存不了,百度半天也无解。最最后勾选了上面代理的选项,才保存进去了。
至此终于可以通过TortoiseGit上传github了,公司的项目也可以正常拉取。
后记
其实公司的git是配置在gitlab上,没有使用SSH来管理,所以个人的github账户配置也没有这么麻烦。正常生成一组公私密钥,即id_rsa和id_rsa.pub,将id_rsa.pub拷贝到github里setting的新建SSH keys中,使用SSH地址去克隆项目到本地就行了,TortoiseGit也能正常使用!