Git多账户配置

前言

公用SSH密钥对于GitLab必须是唯一的,因为它们将绑定到你的帐户。SSH密钥是通过SSH推送代码时唯一拥有的标识符,所以它需要唯一地映射到单个用户

在实际开发中,我们可能会碰到在一台电脑上配置多个git账户,在不同仓库提交不同的信息,比如个人git账户“personal”和公司git账户“work”。因此我们需要生成多对密钥以对应不同的账户。

大致思路,建立两个密钥,不同账号配置不同的密钥,不同仓库配置不同密钥

首先确认你已安装Git,可以通过 git --version 命令可以查看当前安装的版本。
Mac OSX中都已经安装了Git。但是,Git的版本未必是最新的。可以通过命令git clone https://github.com/git/git进行更新

1、生成SSH Keys

钥对的保存位置默认在 ~/.ssh 目录,先定位到对应目录

cd ~/.ssh 

密钥有多种,具体根据git服务器选择。RSA密钥是最常见的密钥,ED25519 SSH密钥则具有更高的安全和性能。输入命令后连续enter跳过密码直接生成

ssh-keygen -t rsa -C "email@example.com"

或者你想生成一个ED25519 SSH密钥对

ssh-keygen -t ed25519 -C "email@example.com"

输入生成ssh-key命令回车后会提示你自定义key的名称,直接回车即为默认名称"id_rsa",如果你有多个账户,建议在名称上做区分,这里我命名为“gitlab_id-rsa-work”。回车;提示输入密码,你可以设置,不想设置则直接回车两次,输入“ls"回车即可看到创建的密钥对。如下图
在这里插入图片描述
重复上述命令创建多组密钥对

2、添加 SSH Keys

复制公钥配置到git服务器

pbcopy < ~/.ssh/gitlab_id-rsa-work.pub

添加私钥到本地

ssh-add ~/.ssh/gitlab_id-rsa-work 

添加完毕后,可以通过执行 ssh-add -l 验证下,如图即为添加成功
在这里插入图片描述

3、管理密钥

接下来,我们需要在本地创建一个密钥配置文件,通过该文件,实现根据仓库的 remote 链接地址自动选择合适的私钥。这是在~/.ssh/config文件中配置的。

如果没有config文件,需要创建

mkdir -p config

编辑config文件,输入

Host github
    Port 22
    User userName1
    HostName github.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/github_id-rsa
Host gitlab
    Port 22
    User userName2
    HostName gitlab.com
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/gitlab_id-rsa-work

在此文件中,可以设置多个主机的配置,例如GitLab.com,你自己的GitLab实例,GitHub,Bitbucket等。每个用户配置包含以下几个配置项:

  • Host:仓库网站的别名
  • Port:自定义的端口。默认为22,可不配置
  • User:仓库网站上的用户名
  • HostName:真正连接的服务器地址
  • PreferredAuthentications指定优先使用哪种方式验证,支持密码和秘钥验证方式
  • IdentityFile本次连接使用的私钥的绝对路径

注:Host 就是可以替代 HostName 来使用的别名,比如我 github 上某个仓库的 clone 地址为:“git@github.com:test.git”,那么使用 Host 后就是:“git@github:test.git“

4、测试

测试是否配置正常,(替换gitlab.com为GitLab的实例域)

ssh -T git@gitlab.com

首次通过SSH连接到GitLab时,将要求您验证要连接的GitLab主机的真实性。例如,当连接到GitLab.com时,请回答yes将GitLab.com添加到受信任主机列表中

5、仓库配置

Git共有三个级别的config文件,分别是system(系统级别)、global(用户级别)和local(当前仓库)。system配置整个系统只有一个,global配置每个账户只有一个,而local配置和git仓库的数目相同,并且只有在仓库目录才能看到该配置。

设置先从system -> global -> local 底层配置会覆盖顶层配置 分别使用-- system/global/local 可以定位到配置文件

查看系统config

git config --system --list

查看当前用户(global)配置

git config --global  --list

查看当前仓库配置信息

git config --local  --list

由此可见–global中存储了提交用户的email和用户名 如果需要手动设置则可以使用如下指令

git config --global user.name "myname"
git config --global user.email  "test@gmail.com"

假设gitlab与jgithub的工作目录分别如下所示:~/workspace/github 和 ~/workspace/gitlab,如果我希望分别以不同的用户名提交,配置如下:

#gitlab
$ cd ~/workspace/gitlab
$ git init
$ git config --local user.name 'gitlab'
$ git config --local user.email 'gitlab@company.com'

#github
$ cd ~/workspace/github
$ git init
$ git config --local user.name 'personal'
$ git config --local user.email 'personal@163.com'

7、Git查看配置命令

可以运行如下命令获取对config命令的手册页帮助:

git help config

8、资料

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值