同一客户端下使用多个git账号

在日常使用git作为仓库使用的时候,有时可能会遇到这样的一些情况:

1. 有两个github账号,一台电脑怎么同时连接这两个账号进行维护呢?
2. 自己用一个github账号,平时用来更新自己的一些资料;公司使用的gitlab(也是git的衍生产品)

总结来说,就是同一客户端(即同一台电脑)可能需要连接多个git衍生产品账号(以下简称git账号)。下面就记录一下我配置的方法,也是网上都可以搜到的。

首先来说,配置多个git账号分为两种情况:

  1. 已经配置过git账号,想在添加一个账号。
  2. 没有配置过任何git账号,直接就像配置两个账号

已配置过git账号

一般开发用户应该都配置过一个git的账号,让我们先来回顾一下,当时我们是怎样来配置git账号的(只有熟悉了配置的过程和原理才能更好地去理解)。

回顾配置git账号的过程

配置git本地和远程github连接通信的方法,网上有很多,想了解的同学可以看一下这里http://www.cnblogs.com/tinyphp/p/5025311.html或者想了解如何生成SSH keys的可以看一下这里http://www.jianshu.com/p/31cbbbc5f9fa/

解释一下:
当本地git仓库和github上的仓库进行通信的时候,必须得双方建立连接才行,而SSH keys就是两者建立连接的一把钥匙,只要钥匙对了就完成了其中一步验证了。其中我们可以在生成的SSH keys中看到,里面包含了我们的账号信息和邮箱信息(后面会用到,先提一下)。

还有一步验证就是用户名和邮箱的验证,这个貌似可有可无(具体我也没搞清楚,反正不设置的时候也没有问题),有些连接本地git仓库和github仓库的教程中会有下面这样的设置:

git config --golbal user.name 'chping2125' //以我的git账号为例

git config --golbal user.emil 'chping_2125@163.com'
//该邮箱账号是我的github注册时的邮箱

这其实就是在设置全局范围的用户名和邮箱的设置,有时不设置这一步,两者之间进行连接会有问题。

设置多账号

简单回顾玩设置git账号的步骤和一些注意点,进入今天的主题,设置多账号。

清除git的全局设置

如果你之前在设置本地仓库和github连接的时候设置过user.nameuser.email,那么你必须首先清楚掉该设置,因为不清楚掉该设置,两个账号在提交资料的时候,验证肯定冲突(只能设置一个全局的user.nameuser.email,而你现在有两个账号就对应两个不同的)。

git config --global user.name "your_name"
git config --global user.email  "your_email"

就是重新设置覆盖了而已。。。

如果没有设置,可以直接跳转第二部。如果你忘了,最好还是覆盖一下。

生成新站好的SSH keys

前面提到过生成的SSH keys里面包含了账号和邮箱信息,所以新账号必须另外在生成一份SSH keys,当然生成的方式和以前一样。

1. 用ssh-keygen命令生成一组新的id_rsa_new和id_rsa_new.pub

ssh-keygen -t rsa -C "new email"

平时我们都是直接回车,默认生成id_rsa和id_rsa.pub。这里特别需要注意,出现提示输入文件名的时候(Enter file in which to save the key (~/.ssh/id_rsa): id_rsa_new)要输入与默认配置不一样的文件名,比如:我这里填的是 id_rsa_new

注:windows用户和mac用户的区别就是,mac中.ssh文件夹在根目录下,所以表示成~/.ssh/,而windwos用户是C:\Users\Administrator\.ssh
下面同理,不在赘述。

2. 执行ssh-agent让ssh识别新的私钥

因为默认只读取id_rsa,为了让SSH识别新的私钥,需将其添加到SSH agent中:

ssh-add ~/.ssh/id_rsa_work   

如果出现Could not open a connection to your authentication agent的错误,就试着用以下命令:

ssh-agent bash
ssh-add ~/.ssh/id_rsa_work

3. 配置~/.ssh/config文件
前面我们在~/.ssh目录下面,使用ssh-keygen -C “your_email” -t rsa 生成公私秘钥,当有多个github账号的时候,可以生成多组rsa的公司密钥。然后配置~/.ssh/config文件(如果没有的话请重新创建一个)。

touch config        # 创建config文件

然后修改如下:
我的config配置如下:

# 该文件用于配置私钥对应的服务器
# Default github user(chping_2125@163.com)
Host git@github.com
 HostName https://github.com
 User git
 IdentityFile ~/.ssh/id_rsa

 # second user(second@mail.com)
 # 建一个github别名,新建的帐号使用这个别名做克隆和更新
Host git@code.xxxxxxx.com
 HostName https://code.xxxxxxx.com    #公司的gitlab
 User git
 IdentityFile ~/.ssh/id_rsa_new

如果存在config文件的话,其实就是往这个config中添加一个Host:

#建一个github别名,新建的帐号使用这个别名做克隆和更新
Host git@code.xxxxxxx.com
 HostName https://code.xxxxxxx.com    #公司的gitlab
 User git
 IdentityFile ~/.ssh/id_rsa_new

其规则就是:从上至下读取config的内容,在每个Host下寻找对应的私钥。这里将GitHub SSH仓库地址中的git@github.com替换成新建的Host别名如:我直接就写成了git@github.com,那么原地址是:git@github.com:chping2125/test.git,替换后任然是:it@github.com:chping2125/test.git。
如果你配置的是这样:

# 该文件用于配置私钥对应的服务器
# Default github user(chping_2125@163.com)
Host git1    #############不同在这里
HostName https://github.com
User git
IdentityFile ~/.ssh/id_rsa

# second user(second@mail.com)
# 建一个github别名,新建的帐号使用这个别名做克隆和更新
Host git2  #############不同在这里
HostName https://code.xxxxxxx.com    #公司的gitlab
User git
IdentityFile ~/.ssh/id_rsa_new

那么你原本想在新账号克隆的命令是

git clone git@xxxxxx.com:chping/test.git

就要相应的变成

git clone git2:chping/test.git

4. 添加新的SSH keys到新账号的SSH设置中
可不要忘了将新生成的SSH keys添加到你的另一个github帐号(或者公司的gitlab)下的SSH Key中。

测试一下

$ ssh -T git@github.com
Hi BeginMan! You've successfully authenticated, but GitHub does not provide shell access.

# 上面是github的成功返回语句,下面是gitlab的成功返回语句。

$ ssh -T git@xxxxxx.com
Welcome to GitLab, chping!

一次性配置两个账号

其实同理上面,先配置一个,在配置两一个。

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

参考资料

http://www.cnblogs.com/BeginMan/p/3548139.html
https://my.oschina.net/csensix/blog/184434
http://blog.csdn.net/guang09080908/article/details/46545335

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,968评论 6 482
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,601评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 153,220评论 0 344
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,416评论 1 279
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,425评论 5 374
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,144评论 1 285
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,432评论 3 401
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,088评论 0 261
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,586评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,028评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,137评论 1 334
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,783评论 4 324
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,343评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,333评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,559评论 1 262
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,595评论 2 355
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,901评论 2 345

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,601评论 18 139
  • 1. 安装 Github 查看是否安装git: $ git config --global user.name "...
    Albert_Sun阅读 13,632评论 9 163
  • 1.git的安装 1.1 在Windows上安装Git msysgit是Windows版的Git,从https:/...
    落魂灬阅读 12,649评论 4 54
  • 声明:这篇文章来源于廖雪峰老师的官方网站,我仅仅是作为学习之用 Git简介 Git是什么? Git是目前世界上最先...
    横渡阅读 3,943评论 3 27
  • 薄薄的一本书,阅读起来很是轻快。伟大的俄罗斯作家列夫.托尔斯泰的自我审识。 人生的发展是阶段性的,每一阶段的...
    文轩坊阅读 364评论 0 0