由于公司的gitlab必须使用工作邮箱,导致我原本github账号的SSHKey被覆盖了,迫不得已,把github的key也绑定了工作邮箱。但是有一个巨大的问题,虽然可以push了,但是push没有记录!!!因为绑定的不是github的账号,于是,产生了绑定两个git账号的想法。公司项目用公司的账号,我的私人仓库用我自己的账号。以下是解决办法:

  1. 在~/.ssh目录下生成一个SSHKey,但要另取一个名字(第一个输入不能直接回车,否则会覆盖原有的key,后两个输入可以回车使用默认值),例如”id_rsa_work”
    1
    ssh-keygen -t rsa -C "your work email"

完成后会出现两个key,id_rsa_work和id_rsa_work.pub

  1. 把id_rsa_work.pub加到你的work账号上
  2. 把新的key加到ssh agent上,由于不是使用默认的.ssh/id_rsa,所以你需要显示告诉ssh agent你的新key的位置

    1
    ssh-add ~/.ssh/id_rsa_work
  3. 在.ssh目录下新建config文件

    1
    2
    vi ~/.ssh/config
    `

加上以下内容

1
2
3
4
5
6
7
Host github.com
HostName github.com #别名,可随意更换
IdentityFile ~/.ssh/id_rsa
Host gitlab.xxxx.com #别名,可随意更换
HostName gitlab.xxxx.com
IdentityFile ~/.ssh/id_rsa_work
`

  1. 可以通过使用gitlab.xxxx.com别名来明确说你要是使用id_rsa_work的SSH key来连接

    1
    2
    3
    4
    5
    6
     # 本地建库
    git init
    git commit -am "first commit'
    # push到gitlab.xxxx.com上去
    git remote add origin git@gitlab.xxxx.com:xxxx/test.git
    git push origin master
  2. 如果原本的项目需要更改key,取消全局设置,针对项目设置username和email

    1
    2
    3
    4
    git config —-global —-unset user.name #取消全局设置
    git config —-global —-unset user.email #取消全局设置
    git config user.name "newname"
    git config user.email "newemail"