使用场景
作为开发人员,可能拥有多个公司项目或者个人项目git账号,但是自己肯定希望一个笔记本就能解决登录管理公司项目、个人项目的 git 库。一台电脑多个github账号配置使用,现在我就来告诉大家我的学习心得和所遇到的的坑!
首先感谢网上提供详细文档教程的用户,大家可以参考下:意林小站的、韩子迟博客
基本步骤
- 安装配置 Git
- 生成多个 SSH key 公共密钥
- 配置 SSH config 相关参数
- 更新本地项目以及 .git
详细步骤
安装 GIt
Mac OS 安装方法:
- 通过
homebrew
安装Git
官网地址 - 方法更简单,也是推荐的方法,就是直接从AppStore安装Xcode,Xcode集成了Git,不过默认没有安装,你需要运行Xcode,选择菜单“Xcode”->“Preferences”,在弹出窗口中找到“Downloads”,选择“Command Line Tools”,点“Install”就可以完成安装了
- 通过
Windows安装Git方法:
- 可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。
安装完成后,在开始菜单里找到 “Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功!
安装完成后,还需要做全局设置,在命令行输入:
- 可以从Git官网直接下载安装程序,(网速慢的同学请移步国内镜像),然后按默认选项安装即可。
$ git config user.name "yourName" // 给自己起个用户名
$ git config user.email "yourEmail@qq.com" // 填写自己的邮箱
生成新的ssh key
按个人需求来,一般按项目名或者类别来命名。我个人就是喜欢分为公司、个人的 ssh key
。用过 git 的会有默认的 id_rsa.pub
那就在生成新的 key
- 生成新的 key 在终端执行命令:
$ ssh-keygen -t rsa -C "youremail@xxx.com"
- 设置 key 名称
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/liudou/.ssh/id_rsa): id_rsa_company(命名:此处 key 给公司用)
Enter passphrase (empty for no passphrase): (一般直接回车略过,避免繁琐设置密码)
Enter same passphrase again:(再次输入密码,回车略过)
Your identification has been saved in
id_rsa_TestSSH_github.
Your public key has been saved in
id_rsa_company.
- 拷贝密钥到个人账号
一般直接打印复制到 各大git管理平台个人账号保存,可以终端输入:
$ cd ~/.ssh
$ ls
$ cat id_rsa_company.pub // 根据个人命名来查询
显示出来的内容复制到,我用的 阿里云key管理
如果打算拷贝你的公钥到你的粘贴板下,请参考你的操作系统使用以下的命令:
Windows:
$ clip < ~/.ssh/id_rsa.pub
Mac:
$ pbcopy < ~/.ssh/id_rsa.pub
GNU/Linux (requires xclip):
$ xclip -sel clip < ~/.ssh/id_rsa.pub
保存到对应的git账号中 ssh-key
后,ssh服务器
默认是去找 id_rsa
,现在需要把新增的 key
添加到 ssh-agent
中,这样ssh服务器才能认识新加的 id_rsa_company
此处需要进行如下操作:
$ ssh-add -K ~/.ssh/id_rsa_company
Mac 用户: 这里为什么加上了一个-K参数呢?因为在Mac上,当系统重启后会“忘记”这个密钥,所以通过指定-K把SSH key导入到密钥链中。
查看添加结果 :
$ ssh-add -l
配置本地 SSH config 文件
- 此处配置 ,需要新建 config 文件
在终端输入以下命令$ vim ~/.ssh/config
- 写入配置内容,如下
#github
Host github
HostName github.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
#aliyun 企业项目 默认 code.aliyun.com
Host code.aliyun.com // 此处别名可以自己定义
HostName code.aliyun.com // 对应 git 服务平台域名不做改动
User silence // 此处自己定义用户名
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_company // 输入新增 key 的路径
#aliyun 个人
Host sunrise #自定义 host别名 sunrise 等同于 code.aliyun.com
HostName code.aliyun.com
User Oracle
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_own
配置好后保存:
按 Esc
退出编辑模式后 按:
进入末行模式, 输入wq
保存退出!
此配置文件, 我用上了 github
个人账号、aliyun
的企业子账号、个人账号共三个账号。配置文件至关重要的就是 Host别名,code.aliyun.com
域名相同只能用别名代替,达到同aliyun
平台多个 git 账号连接
- 测试配置是否可用
$ ssh -T git@sunrise (sunrise 是 config 文件中的 Host别名)
如果连接成功会返回:
$ Welcome to GIT, 渡! // 用户名自己在git账号定义的 可以区分 个人 和 企业 git账号
git 更新项目代码
此处需要说明,因为配置的原因,用了 Host 别名 key 配置的 git 账号。该账号下的 git 库,需要做处理
- 该账号本地已有的 git 项目,需要进入项目目录修改
.git/config
文件
[remote "origin"]
url = git@sunrise:23165-Sunrise/note.git
fetch = +refs/heads/*:refs/remotes/origin/*
此处我把url = git@code.aliyun.com:23165-Sunrise
,改为 url = git@sunrise:23165-Sunrise
- 如果线上git项目不在本地,请直接输入:
$ git clone git@sunrise:23165-Sunrise (你账号项目 ssh 地址)
总结
其中关键点 就是 .ssh/config
配置的使用,Host
别名 等同于 git
服务平台域名。现在可以试试多个git账号,一台电脑使用!有不懂地方可以联系我。