[Git技巧]两个Git帐号如何在一台电脑上共存

相信很多开发者都会遇到在自己的电脑上使用不止一个git帐号的情况。一个一般是自己的github帐号,另一个则是公司的git帐号,比如gitlab、bitbucket等。如果采用https方式通信,那么git帐号间不会有冲突,但你在每次pull、push的时候都要输入帐号密码,十分繁琐。而且当代码库达到十分庞大的规模时,如果仍然采用https方式,在git pull时可能出现超时不响应的情况,此时只能采用ssh方式。ssh在配置完ssh key后使用起来很方便,但是git帐号间可能出现冲突,这时候该如何解决呢?

配置ssh key的方式此处不再赘述,假设.ssh文件夹下有id_rsa、id_rsa.pub、didi_id_rsa、didi_id_rsa.pub,分别对应个人github帐号私钥公钥以及公司git帐号私钥公钥。如果不进行设置,使用github账号时没有问题,但是使用公司账号时,由于默认情况下私钥存放在id_rsa文件中,因此git仍会尝试用id_rsa中而不是didi_id_rsa中的私钥去与服务器上添加的公钥进行比对,自然而然会报错。通常这种情况下git会让你输入密码,笔者连续三次输入密码错误(其实根本不知道该密码为何物),报错,Permission denied。

网络上的解决方案普遍为在ssh的配置文件中加入以下字段:

Host github.com
 hostname github.com
 User Boy-A
 IdentityFile /User//.ssh/id_rsa

Host git.xiaojukeji.com
 hostname git.xiaojukeji.com
 User Boy-B
 IdentityFile /User//.ssh/didi_id_rsa

该文件的主要作用就是指明各个git帐号对应的User以及IdentityFile的文件位置。当配置完毕后,在各个项目repo中应用自己的用户名以及邮箱:

1.取消global
git config --global --unset user.name
git config --global --unset user.email

2.设置每个项目repo的自己的user.email
git config user.email "xxxx@xx.com"
git config user.name "ddfe"

如此,各个git帐号间就可以“井水不犯河水”了。

但是,最麻烦的地方其实并不在这里,而是这个配置文件究竟位于何处。根据网友的分享,Window系统中,该配置信息存放在名为config的文件中,位置在~/.ssh/目录下,而在Linux/Unix系统中配置信息则保存在ssh_config文件中,至于位置,众说纷纭。笔者使用的是macOS系统,尝试用“ssh -vT git@git.xiaojukeji.com”去查看ssh连接主机的debug信息,终于发现了头绪,debug信息的第二行如下:

debug1: Reading configuration data /etc/ssh/ssh_config

终于找到了文件的位置!修改之,大功告成!

总结:

  1. 使用命令“ssh -vT git@xxx.com”查看ssh_config文件的位置

  2. 进入ssh_config文件,配置各个git帐号的User以及IdentityFIle

  3. 在各个项目中配置好user.name以及user.email

  4. 在各个git帐号间尽情穿梭吧~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值