如何在本地管理和切换多个 github 账号?
前言
大多数的我们都会遇到这样一个问题:公司有一个 github 账户,这个是专门为工作准备的。而我们自己也有一个自己的私人 github 账户,有事没事做做自己的项目,写写自己感兴趣的东西。可是,我们怎么在电脑上把公司 github 切换到自己的私人github 账号上呢?
我公司内部建议用 smartgit 来精简 git 的操作,但是,我却没办法在上面切换成自己的账号,这意味着我必须在自己的电脑上使用自己的私人账号。oh, 这真是一个烦人的问题。
经过在 google 上查找资料和不断地试错,我终于成功的解决了这个问题。现在,让我来介绍以下这个是怎么解决的吧。
本质上,这只是一个平衡 git 和 ssh 配置的问题——实际上这并没有看上去那么糟糕。—Michael Herman
操作过程
它的操作包括
- 创建ssh密钥
- 将密钥添加到 github 账户;
- 创建 config 文件,管理单独的 key
- 更新存储的 key
- 测试 git clone 和 git push
- 怎样在终端上切换 github 账号
1. 创建 SSH 密钥
以我为例,我有两个 github 账户,一个工作用的,用户名是 yuanzhen-kooboo,;另一个是私人的:huangyuanzhen。所以,我要创建两个密钥,每个账号一个:
操作为:
- 打开cmd;
- 依次输入命令:
cd ~/.sshssh-keygen -t rsa -C "1356409766@qq.com"ssh-keygen -t rsa -C "3083074260@qq.com"
复制代码
- 当出现 "Enter file in which to save the key" 的提示时,将文件保存为 id_rsa_<>。在我的示例中,我将文件保存为 ~/.ssh/id_rsa_personal 和 ~/.ssh/id_rsa_company;
效果如图:
找到 C:\Users\huangyuanzhen\.ssh 下,可以看到,生成了下面四个文件:
- id_rsa_personal
- id_rsa_personal.pub
- id_rsa_company
- id_rsa_company.pub
2. 将新密钥绑定到 github 账号
- 用记事本打开 id_rsa_personal.pub 文件,全选复制;
- 来到我的私人github账户,找到 setting,打开,点击 "SSH and GPG keys" 选项,可以看到有一个 “add SSH key" 按钮,将刚才复制的内容粘贴到文本区域,同时添加一个相关标题;成功之后是这个样子的:
- 相对的,在其他账户上重复相对应的操作;以我的为例,则是把 id_rsa_company.pub 的内容粘贴到我工作账户 yuanzhen-kooboo 的 ssh 上;
3. 创建一个配置 config 文件来管理 key
在 ~/.ssh/ 目录下创建一个 config 文件
echo test>config
复制代码
找到这个文件,并用编辑器打开(我的是 vscode),然后将下面内容写入文件,保存:
# huangyuanzhenHost personalHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_personal# yuanzhen-koobooHost companyHostName github.comUser gitIdentityFile ~/.ssh/id_rsa_work
复制代码
这里我们的主机名称不是 github.com,而是将其命名为 personal 和 company。不同之处在于,我们现在附加了之前创建的新标识文件: id_rsa_<>;
4. 更新存储的key
在更新存储之前,我们要先检查一下本地的 OpenSSH 服务有没有开启。不然会出错。
开启 ssh 服务的流程为:
- 设置 → 管理可选功能 → 添加功能 → [OpenSSH服务器]
- 计算机管理 → 服务和应用程序 → 服 务→ OpenSSH Authentication Agent&OpenSSH Server → 右击
启动之后看到的是这样子的:
开始 SSH 服务之后,我们就可以使用ssh 命令了。
清除当前存储的认证:
C:\Users\huangyuanzhen>ssh-add -D// All identities removed.
复制代码
增加新的keys:
C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_companyIdentity added: id_rsa_company (id_rsa_company)C:\Users\huangyuanzhen\.ssh>ssh-add id_rsa_personalIdentity added: id_rsa_personal (id_rsa_personal)
复制代码
验证一下! github 是否能识别到这些 keys;在cmd中输入:
ssh -T personal
复制代码
可以看到 "Hi huangyuanzhen! You've successfully authenticated, but GitHub does not provide shell access." 的提示语。这表明,github 能识别这些 keys 了。Cool !
5. 测试 clone 和 push
测试 git clone
以我的私人账户为例,我想把 huangyuanzhen 账号上的 Look-Thinking 仓库克隆到本地,然后操作。
在cmd 上输入:
git clone git@personal:huangyuanzhen/Look-Thinking.git
复制代码
可以看到可以成功把该仓库克隆过来:
如果要操作仓库,执行命令 "cd Look-Thinking → code . "就可以操作了。是不是感觉非常方便?
测试 git push
还是以在我的私人 github 账号 huangyuanzhen 上操作为例。在 账号上创建 work-test 仓库;然后在本地创建 test 文件夹:
E:\mkdir testE:\cd testE:\test>echo test>readme.md
复制代码
创建好 readme.md 文件后,将其 push 到 github ;
git initgit add .git commit -am "first commit"git remote add origin git@personal:huangyuanzhen/test.gitgit push -u origin master
复制代码
将文件push成功之后是这样的:
可以在github账户上看到在本地对 readme.md的操作结果。git pull 同理。
我们怎样用命令行切换账号呢?
如果之前已经用 git remote add 和远程 仓库建立过连接,我们需要先清除当前连接,不然会报错:“fatal: remote origin already exists.”;清除当前连接之后,然后连接新的账号里的仓库,如:
git remote rm origingit remote git add origin git@company:yuanzhen-kooboo/work-test.git
复制代码
这里,我们就断开了之前和 huangyuanzhen 账号的连接,然后切换到了 yuanzhen-kooboo 账号。
这样配置好之后,不需要再用 smartgit 等一些辅助工具,直接在终端使用命令行操作,我感觉十分方便了呢!动手试试吧。
注意:上面命令行是在windows上操作,如果是在别的操作系统上,直接换成对应的操作命令即可。
资料
- Managing Multiple Github Accounts
- Quick Tip: How to Work with GitHub and Multiple Accounts
- 图解 -- Win10 OpenSSH
转载于:https://juejin.im/post/5cc18add6fb9a032414f6071
如何在本地管理和切换多个 github 账号?相关推荐
- [转]如何切换多个GitHub账号
转载说明:感谢原作者!如有侵权,请联系我删除,谢谢! 原文链接:https://www.jianshu.com/p/0ad3d88c51f4 如何切换多个GitHub账号 1 前言 很惭愧做了几年开发 ...
- 微信多开工具:一键排序多开登录窗口,方便管理与切换多个微信账号
论坛微信多开工具蛮多的,测试了一款发现不好用,于是在网上找到一款开源的微信多开易语言源码,功能多开测试是没问题,就是多开的登录窗口会在屏幕中间显示,需要鼠标一个个移动,感觉有点不爽,所以给增加了窗口一 ...
- Oracle本地管理对照数据字典管理表空间
Locally vs. Dictionary Managed Tablespaces 整理自:http://www.orafaq.com/node/3. When Oracleallocates sp ...
- 如何在一台电脑上管理/切换多个github账户
场景:比如个人person和公司work的多个github账号,这个时候在本地做操作,是无法用work账号操作person账号下的git仓库的. 当我用work提交属于person的代码的时候,会出现 ...
- 表3.5 文章管理测试用例表_本地管理表空间管理机制
表空间是一种为段(表,索引等)提供空间的逻辑结构,所以,当在表空间中增加,删除段的时候,数据库就必须跟踪这些空间的使用. 如下例所示,假定一个新创建的表空间包含了五个表 表一--表二--表三--表四- ...
- swarm 本地管理远程_带有WildFly Swarm的远程JMS
swarm 本地管理远程 我再次在博客中谈论WildFly群? 简短的版本是:我需要对远程JMS访问进行测试,并且拒绝设置复杂的功能(如完整的应用程序服务器). 这个想法是要有一个简单的WildFly ...
- 本地管理表空间(LMT)与自动段空间管理(ASSM)概念(未看)
本地管理表空间(LMT)与自动段空间管理(ASSM)概念 创建表空间时,extent management local 定义本地管理表空间(LMT),segment space management ...
- oracle创建本地表空间,本地管理表空间——大家继续讨论!
本地管理表空间 Locally Managed Tablespace 一.概述 1.理解本地管理表空间的由来 2.理解什么是字典管理表空间及工作原理 3.理解本地管理表空间的优势(为什么要使用本地管理 ...
- G120变频器本地_远程切换(CDS切换)的具体方法和步骤
G120变频器本地_远程切换(CDS切换)的具体方法和步骤 CDS的含义:命令数据组 CDS[1] 本地控制:端子启停.模拟量调速 CDS[0] 远程控制:现场总线控制变频器 通过参数设置CDS的具体 ...
最新文章
- Ubuntu 16.04安装NASM汇编IDE-SASM
- Vivado之增量编译的实现
- 动物为什么会预知地震,地震后为什么会下雨?
- 光猫直连电脑不能上网_电脑插上网线不能上网怎么办
- Linux 向文件末尾追加命令(转载)
- android uri跳转导航,android:scheme 通过uri跳转到APP应用指定Activity
- 天龙源码框架分析_天龙源码分析 - 客户端登录流程
- 1年内从2000涨到13000的成长经验分享
- 8.高性能MySQL --- 优化服务器设置
- 多线程设计模式总结(一)
- C语言运算优先级口诀
- fspecial在matlab中什么意思,Matlab中fspecial的用法 | 学步园
- 依赖hutool压缩文件
- 星际争霸2神族全兵种介绍
- K-th Closest Distance (主席树)
- Hard-Margin SVM(支持向量机)
- vim的安装以及基础使用方法;
- Tableau长期免费使用的方法总结(包括Tableau Public,Tableau Desktop,Tableau Pre,Tableau eLearning)
- 如何把旧电脑游戏数据迁移到新电脑?
- gulp:提示:Error: watching html/*: watch task has to be a function (optionally generated by using gulp