赞
踩
我自己的git账号属于GitHub, 公司使用的是GitLab,公司配备了电脑。电脑已经配置了公司的GitLab账号了。虽然家里也有电脑,但是平时工作的一些总结什么的,想发到自己的GitHub上,总不能等到回家的时候再写上吧~~~所以,我就想在公司电脑的基础上,配置自己的GitHub。
我的配置主要参考了一篇文章《一台电脑绑定两个github帐号教程》。配置步骤差不多, 就是对有些地方容易搞错。本文主要是在这篇文章地基础上做记录(绿色文字为我的记录)。
ssh 方式链接到 Github/GitLab,需要唯一的公钥,如果想同一台电脑绑定两个Github/GitLab 帐号,需要两个条件:
解决方案:
用户名/邮箱
设置,为每个仓库独立设置 用户名/邮箱密钥
ls ~/.ssh/
,看到 id_rsa
与 id_rsa_pub
则说明已经有一对密钥。如下图id_rsa_2
(保证与之前密钥文件名称不同即可,文件名最好有意义,否则写后面的配置的时候写错文件名,我的文件名是id_rsa_ljy)ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"
如下图
上面命令执行完,~/.ssh下就出现了"_ljy"结尾的文件
.ssh
文件夹下新建 config
文件并编辑,令不同 Host 实际映射到同一HostName
,但密钥文件不同。Host 前缀可自定义,例子中ieit
-
- # default
- Host github.com
- HostName github.com
- User git
- IdentityFile ~/.ssh/id_rsa
- # two
- Host ieit.github.com
- HostName github.com
- User git
- IdentityFile ~/.ssh/id_rsa_2
<span style="color:#009900">新建config的图跟上面3.的图一样。之后我把上面的代码拷过来,修改了Host和HostName(我把Host和HostName都写一样的)。具体他们的含义如下 :</span>
- #Host myhost(这里是自定义的host简称,以后连接远程服务器就可以用命令ssh myhost)[注意下面有缩进]
- #User 登录用户名(如:git)
- #HostName 主机名可用ip也可以是域名(如:github.com或者bitbucket.org)
- #Port 服务器open-ssh端口(默认:22,默认时一般不写此行
- #IdentityFile 证书文件路径(如~/.ssh/id_rsa_*)
引自《Git多帐号配置》,我的配置如下:
id_rsa.pub
,id_rsa_2.pub
内容copy 到对应的 repo(这里因为公司的配置很早就配置了。我是添加我的GitHub,所以我只做了一步:id_rsa_2.pub
内容copy 到我的GitHub账号配置那里,我没有copy在repo的SSH key。因为我想让我的这个电脑能访问到GitHub账号的所有工程)-
- ssh -T git@ieit.github.com
- ssh -T git@github.com
- # Hi IEIT! You've successfully authenticated, but GitHub does not provide shell access.
- # 出现上边这句,表示链接成功
clone
到本地, folder-name
是本地文件夹路径git clone git@github.com:whatever folder-name
-
- # 取消全局 用户名/邮箱 配置
- git config --global --unset user.name
- git config --global --unset user.email
- # 单独设置每个repo 用户名/邮箱
- git config user.email “xxxx@xx.com”
- git config user.name “xxxx”
- <span style="color:#009900"><strong>
- </strong></span>
<span style="color:#009900"><strong>PS:</strong>(1)git config命令要到工程目录下(反正就是git目录)执行,否则是出错的,下面就是不在git目录下执行的结果:后来我恍然大悟,然后切换到工程目录下执行就OK了。</span>
(2)“单独设置每个repo 用户名/邮箱”这个步骤,我就是跑到工程下,执行git config user.email “xxxx@xx.com”和git config user.name “xxxx”命令。看来以后每次我GitHub/GitLab clone一个新的工程下来,都要在clone完成后,在这个工程目录下执行这两条语句来配置。【解决办法】:工作电脑平时使用公司的gitlab比较多,可以把公司的账户设置为全局,然后在单独的需要用别的账号的工程下配置对应的账号。这样就不用频繁地做这个配置。(这个全局设置与单独工程下设置地顺序不做要求
【解决办法】:工作电脑平时使用公司的gitlab比较多,可以把公司的账户设置为全局,然后在单独的需要用别的账号的工程下配置对应的账号。这样就不用频繁地做这个配置。(这个全局设置与单独工程下设置地顺序不做要求
-
- git remote rm origin
- git remote add origin git@ieit.github.com:whatever
git push origin master
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。