同一台电脑上个人的github账户如何与公司的gitlab账户共存
前些天,写了篇博客 开发环境之git:团队协作git工作流与常用命令。
主要是回顾其中的第一小节基本配置。
但是对于很多程序员而言,我们不仅有公司的gitlab账户做公司的业务,也会有自己个人的github账户整理自己的学习代码,如何在同一台电脑上让这两个账户共存?
一. 先来看看你可能想到的方式:
1.1 直接把之前生成的 ~/.ssh/id_rsa.pub 文件用类似的方式添加到github网站上。
右上角点击头像 --> 点击settings --> 点击 SSH and GPG keys --> 点击 New SSH key --> 粘贴 id_rsa.pub
当你发现你用ssh的方式拉取github仓库的时候
git clone git@github.com:用户名/仓库名.git
会提示
Cloning into '仓库名'...
ERROR: Repository not found.
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
想想也是,仔细看id_rsa.pub文件 后面跟的是公司邮箱的地址,而你的github账户是你自己私人邮箱的地址,两个服务器明显都不在一起,鉴权和验证都是分开的。这种方式是不行的。
1.2. 不管了,那直接用https的方式总可以吧,可以是可以,但是https的弊端大部分人也都清楚,每次推送代码都需要输入你的github账户名和密码了,这样很烦
1.3. 重新设置下
git config --global user.name "github用户名"
git config --global user.email "github邮箱"
这样貌似可行?(没亲自试过),但有可能正在自己的github项目中练手,突然公司项目来了个新bug,你就又要重新设置成公司的用户名邮箱什么的,经常需要这样来回切就有点烦
二、一劳永逸的方式
之前公司的gitlab账户的ssh key 是正常的,那就先不管他了,其实我们要做的就只是再去生成一个新的ssh key 添加到 github账户上而已。
2.1. 生成一个github的ssh key
ssh-keygen -t rsa -C "你的github邮箱" -f ~/.ssh/github_rsa
2.2. 输入上面的命令后一路回车,然后到 ~/.ssh 目录下去找,会发现多了两个文件 github_rsa 和 github_rsa.pub。 把github_rsa.pub 按照 1.1 的方式添加到github中去
2.3 在~/.ssh/目录下创建一个config文件,分别配置公司gitlab的ssh key 和 自己个人的 ssh key
Host gitlab
HostName 公司的代码仓库服务器地址
User gitlab用户名
IdentityFile ~/.ssh/id_rsa
Host github.com
HostName github.com
User github用户名
IdentityFile ~/.ssh/github_rsa
其实这里的User并不会有我们预期的效果,比如你在公司的gitlab用户名一般会取实名的名字,而github是一个随意的昵称。这里并不会让你以后推送代码到gitlab时取 你在这里配置的 gitlab用户名,同样也不会推送到github时取你在这里配置的 github用户名。因为这个其实只是针对ssh key的配置的User,并不会影响你之前通过 git config --global user.name "公司gitlab用户名" 设置的git账户名
2.4 至此,可以分别测试一下了你的ssh 是否能连通了
ssh -T git@gitlab
ssh -T git@github.com
如果出现类似这样的字段就表明你的ssh key可以用了
Hi XXX! You've successfully authenticated, but GitHub does not provide shell access.
2.5 强迫症的福音
前面2.3中提到 ~/.ssh/config 文件中的User 并不等同于我们的git账户名。
有可能你之前设置过
git config --global user.name "公司gitlab实名"
然后你发现你传代码到github的时候,也是显示的这个实名,让你觉得有点不爽。
你可以继续到你本地的github仓库项目文件夹下去设置一个本地的用户名
git config --local user.name "github用户名"
再推送,就可以显示对应的用户名了。
这里什么时候用global 什么时候用local 其实取决于你自己用哪个账户用得多一点,比如你在公司的电脑上,你就可以把公司的gitlab用户名加 --global 配置,而自己个人的github加 --local。如果你是在你自己家里的电脑上,就可以是相反的操作了。
同一台电脑上个人的github账户如何与公司的gitlab账户共存的更多相关文章
- 如何在同一台电脑上使用两个github账户(亲测有效)
1 前言 由于有两个github账号,要在同一台电脑上同步代码,需要给每一个账号添加一个SSH public key,此时推送时git push origin,不知道是哪个账号的远程仓库名称,所以需要 ...
- 201709012工作日记--一台电脑创建两个Github账户上传代码
1. 在一台主机上面使用多个GitHub账号 有时候,我们需要将个人账号和公司账号区分,这时候我们就会需要在一台电脑上使用2个不同的git账号. 2. 上传文件 http://blog.csdn.ne ...
- git学习笔记:一台电脑上配置两个git账户
如何在一台电脑上配置两个git账户,现在云端仓库很多,有开源中国的 gitee.com 微软的 github.com 还有 gitlab.com 和 bitbucket.org 等等,下面是具体步骤 ...
- Git学习笔记——从一台电脑上传文件到Github上
目标:从一台电脑上传文件到Github上 前提: 1.这里假定已在Github上创建了仓库,建立了仓库 2.已在这台电脑上安装了Git客户端 实验环境: 1.Windows 10 64位,已安装了Gi ...
- 四步实现在一台电脑上使用多个github账号
四步实现在一台电脑上同时使用多个GitHub账号 今天和大家聊一下如何在一台电脑上同时使用多个GitHub账号,通过以下四个步骤就可以实现,其中第二个步骤为了便于叙述分成了几个小步骤. 1. 取消全局 ...
- git同时存在两个账号(在同一台电脑上)——三步完成
目录 1.首先是常规设置 2.同时添加两个账号 3.最后一步,配置~/.ssh/config文件 4.补充:有时因为设置了全局账号,因此需要清除 由于本人有连个git账号,个人github账号和公司g ...
- 简易搭建git仓库、关联远程和本地仓库方法。克隆仓库方法。同一台电脑上创建两个git ssh key方法。
一,在github上建仓库 react-js-antd-demo: 二:将远程仓库与本地仓库关联 git remote add origin git@github.com:begin256/react ...
- 一台电脑上配置多个git的ssh key
前几天公司的代码库全部迁移到了阿里云上,在配置git的ssh key的时候遇到了一个问题,那就是自己的密钥在添加时提示已经存在,原来是自己的个人账号上已经添加过这个密钥了,公司分配的账号就不能再添加这 ...
- 在同一台电脑上同时安装Python2和Python3
目前Python的两个版本Python2和Python3同时存在,且这两个版本同时在更新与维护. 到底是选择Python2还是选择Python3,取决于当前要使用的库.框架支持哪个版本. 例如:HTM ...
随机推荐
- Confluence 6 如何备份存储文件和页面信息
备份的 ZIP 文件包含有 entities.xml,这个 XML 文件包含有 Confluence 的所有页面内容和存储附件的目录. 备份 Zip 文件结构 页面的附件是存储在附件存储目录中的,通过 ...
- 10,关于在vs2017中的netcore项目使用BundlerMinifier 配置问题
查阅资料 https://github.com/madskristensen/BundlerMinifier/issues/230 今天下载了vs2017 rc 创建了个netcore的web项目,突 ...
- STL的基本操作指令
list :Lists将元素按顺序储存在链表中. 与 向量(vectors)相比, 它允许快速的插入和删除,但是随机访问却比较慢. assign() 给list赋值 back() 返回最后一个元素 b ...
- 使用gulp进行代码压缩
gulp是一个很不错的前端自动化工具,可以帮我们完成一些重复性操作,比如html.css和js代码的压缩.合并.混淆等,虽然这些操作可以通过一些在线工具帮我们实现,但不断重复地复制粘贴肯定比不上一句命 ...
- poj3662 二分+最短路
/* 给定一张无向图,要求找到1-n的路径,该路径上第k+1大的边是所有路径上最小的 如果没有1-n的路,那么输出-1 二分答案mid,遍历一次所有边,如果边权小于mid,则设为0,大于mid,则设为 ...
- Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置
一.静态资源WEB服务 1.静态资源类型:非服务器动态运行生成的文件 2.静态资源服务场景-CDN 假设静态资源存储中心在云南,用户在北京去请求一个文件,那么就会造成一个传输的延时,而如果Nginx同 ...
- SpringBoot系列七:SpringBoot 整合 MyBatis(配置 druid 数据源、配置 MyBatis、事务控制、druid 监控)
1.概念:SpringBoot 整合 MyBatis 2.背景 SpringBoot 得到最终效果是一个简化到极致的 WEB 开发,但是只要牵扯到 WEB 开发,就绝对不可能缺少数据层操作,所有的开发 ...
- 字符转ASCII码
char k = '成'; int str = (int)k; Console.WriteLine(str); 结果25104就是‘成’对应的ASCII值
- java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息
1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...
- HDU 1384 Intervals【差分约束-SPFA】
类型:给出一些形如a−b<=k的不等式(或a−b>=k或a−b<k或a−b>k等),问是否有解[是否有负环]或求差的极值[最短/长路径].例子:b−a<=k1,c−b&l ...