工作中往往我们会遇到这种情况, 公司给了邮箱, 采用类似gitlab
之类的git
服务托管商, 而我们又拥有自己的github
账户. 闲暇之余, 我们希望能将个人开源项目或者学习笔记之类的托管到github
上, 这时就涉及到git
的多账号配置了.
具体流程
-
ssh-keygen -t rsa -C test@test.com
, 生成秘钥, 注意不要覆盖原有的秘钥文件(生成时候重新命名该秘钥文件, 其它直接默认即可) -
ssh-add -l
查看当前电脑已经添加了多少用户标识(也就是秘钥),.ssh
下的id_rsa
文件(首次新建的秘钥文件)不添加也可被git
感知 -
ssh-add ~/.ssh/id_rsa_custom
, 添加自定义的秘钥, 若报错, 请使用ssh-agent bash
开启bash
环境代理来执行相关的git
命令 - 编辑
.ssh
目录下的config
文件, 不存在则新建即可. 该文件内容如下:Host git@github.com HostName https://github.com User git IdentityFile ~/.ssh/id_rsa_custom
-
Host
为你的HostName
的别名, 可自定义使用(若自定义后则执行克隆时候, 使用git clone custom_name:xxx/xxx.git
, 其它操作类似) -
HostName
为你的git
服务托管商网址, 我这边直接选择的是github
-
User
表示你采用的是那种代码托管服务, 这里采用git
-
IdentityFile
为你的秘钥文件(带上路径)
-
-
ssh -T git@github.com
测试自定义的账号是否配置成功 - 配置好以上后, 基本就可以进行多账号的环境开发了. 但是一般在提交或者推送时候,
git
是需要你提供你的emai
, 此时可以将主要开发的邮件设置为全局的(git config --global user.email primary@primary.com
, 设置全局用户名git config --global user.name primary_name
). 如果在你的开源工程或者学习工程不想使用该邮件, 则进去该工程根目录下, 执行git config user.email test@test.com
以及git config user.name test
. 此时改工程下的用户名和邮件会取代全局的用户名和邮件
bug记录
-
question
:fatal: refusing to merge unrelated histories
-
method
:git pull origin master --allow-unrelated-histories
网友评论