mac中.ssh文件夹在根目录下,所以表示成 ~/.ssh/。

一、同一个电脑配置两个github账号
1、分别为两个GitHub账号生成SSH密钥

$ cd ~/.ssh
$ ssh-keygen -t rsa -f id_rsa -C "camillehou666@gmail.com"
$ ssh-keygen -t rsa -f id_rsa_github -C "zhugeshuiying@126.com"

操作完成后,在 ~/.ssh/ 路径下会出现四个文件:

id_rsa
id_rsa.pub
id_rsa_github
id_rsa_github.pub

2、在GitHub账户添加SSH公钥
使用下列命令获取两个SSH公钥的值:

$ cat id_rsa.pub
$ cat id_rsa_github.pub

把这两个值分别粘贴到GitHub账号中的SSH keys中保存。

3、设置配置文件让不同账号访问不同SSH密钥
使用下面的命令在~/.ssh/下新建一个名为config的文件并编辑:

$ touch config
$ vim config

填入以下内容:

# 第一个github账号
# github user(camillehou666@gmail.com)
Host camille666.github.com
HostName github.com
User camille666
IdentityFile ~/.ssh/id_rsa

# 第二个github账号
# github user(zhugeshuiying@126.com)
Host zhugeshuiying.github.com
HostName github.com
User zhugeshuiying
IdentityFile ~/.ssh/id_rsa_github

4、本地添加私钥
然后清空一下本地的SSH缓存,添加SSH私钥到ssh-agent:

$ ssh-add -D
$ eval "$(ssh-agent -s)"
$ ssh-add id_rsa
$ ssh-add id_rsa_github

最后确认一下新密钥已经添加成功:

$ ssh-add -l

5、测试两个帐户是否可用

$ ssh -T git@camille666.github.com
$ ssh -T git@zhugeshuiying.github.com

如果出现“Hi zhugeshuiying! You've successfully authenticated, but GitHub does not provide shell access.”的提示,说明已经设置成功。

6、克隆仓库

# 原来
$ git clone git@github.com: 用户名/test.git

#现在
$ git clone git@camille666.github.com:camille666/wpk-compiler.git
$ git clone git@zhugeshuiying.github.com:zhugeshuiying/testpaper.git

7、清除git的全局设置
使用 git config --list 查看当前配置。

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

$ git config --global --unset user.name
$ git config --global --unset user.email

8、设置每个项目repo自己的user.email

【添加隐私邮箱】
GitHub提供了两种方法来保护我们的邮箱隐私:

  • 使用GitHub专用的替代邮箱;

如果勾选第1项,且不勾选第2项,要push成功,git这样设置

$ git config user.email "camillehou666@gmail.com"
$ git config user.name "camille666"

$ git config user.email "zhugeshuiying@126.com"
$ git config user.name "zhugeshuiying"

git设置的邮箱尽量和github的邮箱保持一致。

  • 在推送时发现隐私邮箱则阻止推送;

如果勾选第2项,要push成功,要么去掉第一项勾选,要么把修改git设置

$ git config user.email "camille666@users.noreply.github.com"
$ git config user.name "camille666"

$ git config user.email "zhugeshuiying@users.noreply.github.com"
$ git config user.name "zhugeshuiying"

二、同一个电脑配置github和gitlab账号

# 该文件用于配置私钥对应的服务器
# github user(camillehou666@gmail.com)
Host github.com
HostName github.com
User camille666
IdentityFile ~/.ssh/id_rsa_github

# 建一个gitlab别名,新建的帐号使用这个别名做克隆和更新
# gitlab user(houyi154084@alibaba-inc.com)
Host gitlab.alibaba-inc.com
HostName gitlab.alibaba-inc.com
User houyi154084
IdentityFile ~/.ssh/id_rsa

三、一些问题

1、github修改用户名和邮箱后,这个地方头像不显示也没办法点击了,是什么原因?

这是因为commit里显示的头像和用户名是根据你本地Git配置决定的,不是由你的Github账户决定的。当你的Github账户里的邮箱和你本地Git配置里刚好一致时,Github会把commit里的邮箱替换为用户名和头像。

同一个电脑配置两个github账号的更多相关文章

  1. 同一个电脑配置两个Git问题

    拿到公司电脑后,正常配置gitlab,以及设置邮箱等等,可以使用公司邮箱,以及一系列设置 git config --global user.name "userName" git ...

  2. 如何在一个电脑上使用两个github账号

    问题描述:公司电脑上默认使用的是公司的github账号,如果希望写一些代码放到个人的github账号上,就需要配置让一个电脑上可以使用两个github账号 原理:管理两个SSH key 1.生成两个S ...

  3. Git配置多个github账号免密登录

    在公司开发中,有时候会存在公司账户跟私人账户共存,并随时需要切换的情况,这种情况下git可以配置多个ssh-key,无缝切换账号. 假如有两个github账号,一个是私人github账号,一个是公司g ...

  4. 同一个电脑安装两个jdk版本

    同一个电脑安装两个jdk版本 场景:公司项目使用的jdk为1.,最近不是很忙,学习scala.该系统使用到了jdk1.8的特性,所以I need 俩版本,开整!!! . 准备两个版本的jdk我的两个j ...

  5. 一台电脑配置多个GigHub账号

    换了新的公司,原来的公司用SVN(比较老了),自己平时用码云(Gitee),新公司使用GitHub.前天通知我注册GitHub账号,但是并未通知用户名的事情(要求用自己的名字),原来的GitHub账号 ...

  6. 201709012工作日记--一台电脑创建两个Github账户上传代码

    1. 在一台主机上面使用多个GitHub账号 有时候,我们需要将个人账号和公司账号区分,这时候我们就会需要在一台电脑上使用2个不同的git账号. 2. 上传文件 http://blog.csdn.ne ...

  7. 两个 github 账号混用,一个帐号提交错误

    问题是这样,之前有一个github帐号,因为注册邮箱的原因,不打算继续使用了,换了一个新的邮箱注册了一个新的邮箱帐号.新账号提交 就会出现下图的问题,但是原来帐号的库还是能正常提交.   方法1:添加 ...

  8. 新电脑配置 git 同步github账户

    1.下载安装git 2.初始化 仓库文件夹 git init 3.生成公钥ssh-keygen -t rsa -C "youremail@example.com"4.github ...

  9. 如何在同一台电脑上使用两个github账户(亲测有效)

    1 前言 由于有两个github账号,要在同一台电脑上同步代码,需要给每一个账号添加一个SSH public key,此时推送时git push origin,不知道是哪个账号的远程仓库名称,所以需要 ...

随机推荐

  1. Exams(二分

    题意:给你每天要考的科目,和每门科目需要复习多长时间,问最少需要几天才能完成所有的考试. 思路:二分答案,然后判断答案是否可行,这边需要进行贪心,即倒着往前推, 比如第i天,那么前面有i-1天是,可供 ...

  2. ndk学习之C语言基础复习----虚拟内存布局与malloc申请

    在这一次中来学习一下C语言的内存布局,了解它之后就可以解释为啥在用malloc()申请的内存之后需要用memset()来对内存进行一下初始化了,首先来了解一下物理内存与虚拟内存: 物理内存:通过物理内 ...

  3. ICPC2019上海站游记

    银牌第4,差4名拿金 金牌就保研国奖,银牌就什么都没有 最痛苦的是功败垂成 也许签到罚时太多罢,也许构造做得太晚罢,也许J题没有做出来罢 翻来覆去,似乎也想不到得金的理由 福兮祸所倚 年轻人多遇到点挫 ...

  4. 三种方法给Vmware虚拟机占用空间清理瘦身

    随着VMware虚拟机使用时间的增长,其所占用的空间也越来越大,本文来说说怎么给VMware虚拟机占用的空间进行瘦身. 方法一:VMware自带的清理磁盘这个方法是VMware自带,具有普适性,对快照 ...

  5. java应用本地缓存

            在java应用中,对于访问频率比较高,又不怎么变化的数据,常用的解决方案是把这些数据加入缓存.相比DB,缓存的读取效率快好不少.java应用缓存一般分两种,一是进程内缓存,就是使用ja ...

  6. Java集合--Iterator和Enumeration比较

    转载请注明出处:http://www.cnblogs.com/skywang12345/admin/EditPosts.aspx?postid=3311275 第1部分 Iterator和Enumer ...

  7. nginx location if 的匹配规则

    cation匹配命令 ~      #波浪线表示执行一个正则匹配,区分大小写~*    #表示执行一个正则匹配,不区分大小写^~    #^~表示普通字符匹配,不是正则匹配.如果该选项匹配,只匹配该选 ...

  8. linux 信号量

    https://www.jianshu.com/p/6e72ff770244 无名信号量 #include <time.h> #include <stdio.h> #inclu ...

  9. Appium自动化测试教程-自学网-app基础知识

    Instrumentation的缺点是不支持跨应用,比如我想要先调起通讯录,在操作其他的app,则不支持. 第一步,应该确定系统哪些模块适合自动化.哪些不适合做自动化,明确做自动化给我们带来的好处是什 ...

  10. Codeforces Round #588 (Div. 2) D题【补题ING】

    思路:先找出现次数>=2数.然后在取跑所有数,需要考虑一般情况(当一个人比另一个人的ai小且他们的与运算等于小的那个人的ai那么可以知道大的那个人必定强于ai小的那个人). 则可以用位运算实现判 ...