如何在同一台电脑上使用github和gitlab,多git账号设置方法

如何在同一台电脑上使用github和gitlab

一、生成ssh密钥

这里我们要做的事情就是分别对github和gitlab生成对应的密钥(默认情况下本地生成的秘钥位于/Users/用户名/.ssh/),并且配置git访问不同host时访问不同的密钥,流程如下:

  1. 在gitbash中使用ssh-keygen -t rsa -C "公司邮箱地址"生成对应的gitlab密钥:id_rsaid_rsa.pub
  2. 将gitlab公钥即id_rsa.pub中的内容配置到公司的gitlab网站上
  3. 在gitbash中使用ssh-keygen -t rsa -C "github地址" -f ~/.ssh/github_rsa生成对应的github密钥:github_rsagithub_rsa.pub
  4. 将github公钥即github_rsa.pub中的内容配置到自己的github网站上
  5. 进入密钥生成的位置,创建一个config文件,添加配置:
# gitlab
Host gitlab
    HostName git.xxx.com #这里填你的gitlab的Host
    PreferredAuthentications
    publickey   
    IdentityFile ~/.ssh/id_rsa
# githab
Host github.com
    HostName github.com
    PreferredAuthentications
    publickey  
    IdentityFile ~/.ssh/github_rsa

二、测试连接

在密钥的生成位置/Users/用户名/.ssh/下使用gitbash运行 ssh -T git@hostName命令测试sshkey对gitlab与github的连接:

$ ssh -T git@gitlab
Welcome to GitLab, catalinaLi!

$ ssh -T [email protected]
Hi catalinaLi! You've successfully authenticated, but GitHub does not provide shell access.

如果出现上图结果就说明连接成功,如果不是这样的话就仔细看看第一步哪里做错了。

三、配置git仓库

这里我们要用到git的config配置。git的config文件记录了用户的基本信息,我们的账号信息也在里面,这里我们要做的就行在不同的本地仓库配置不同的用户信息来访问不同的远程仓库。config文件通常有三个位置:

system (系统级别):

位于Windows下在git的安装目录, 包含了适用于系统所有用户和所有库的值。如果你传递参数选项’–system’ 给 git config,它将明确的读和写这个文件。

global(用户级别):

位于~/.gitconfig,具体到你的用户。你可以通过传递–global 选项使Git 读或写这个特定的文件。

local(仓库级别):

位于 .git/config,无论你当前在用的库是什么,特定指向该单一的库。每个级别重写前一个级别的值。

开始配置

简单了解后我们就可以来配置了

  1. 用户级别配置
    因为公司的代码使用频率较高,所以我们将git配置文件的global(用户级别)设置为公司的gitlab账号,在gitlab中使用如下命令:
$ git config --global user.name 'myCompanyName'  #公司账号名称
$ git config --global user.email '[email protected]'  #公司账号邮箱
  1. 仓库级别配置
    我们将local(仓库级别)配置成github的账号。此时我们需要先init一个git的仓库并进入里面后执行如下命令:
$ git config --local user.name 'username' #github账号名称
$ git config --local user.email '[email protected]'
#github账号邮箱 之后我们github的代码都应该在这个仓库下拉取。
  1. 克隆代码
$ git clone [email protected]:XXX/xxx.git

在使用github克隆代码时,因为配置了config, 所以会通过配置的host自动查找到[email protected]。对于gitlab也是相同的道理

至此,在同一台电脑上使用gitlab与github已经成功了。

你可能感兴趣的:(web,#,Windows)