首先确认已安装Git,可以通过 git –version 命令可以查看当前安装的版本。

Mac OSX 中都已经安装了Git。但是,Git的版本未必是最新的。

可以通过命令 git clone https://github.com/git/git 进行更新

Git共有三个级别的config文件,分别是system、global和local

在当前环境中,分别对应

%GitPath%\mingw64\etc\gitconfig文件
$home.gitconfig文件
%RepoPath%.git\config文件

其中%GitPath%为Git的安装路径,%RepoPath%为某仓库的本地路径。

所以 system 配置整个系统只有一个,global 配置每个账户只有一个,而 local 配置和git仓库的数目相同,并且只有在仓库目录才能看到该配置。

大致思路建立两个密钥,不同账号配置不同的密钥,不同仓库配置不同密钥。

1. 清除 git 的全局设置(针对已安装 git)

新安装 git 跳过。

若之前对 git 设置过全局的 user.nameuser.email
类似 (用 git config --global --list 进行查看你是否设置)

$ git config --global user.name "你的名字"
$ git config --global user.email "你的邮箱"

必须删除该设置

$ git config --global --unset user.name "你的名字"
$ git config --global --unset user.email "你的邮箱"

2. 生成新的 SSH keys

1)GitHub 的钥匙

指定文件路径,方便后面操作:~/.ssh/id_rsa.gitlab

ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "abc@qq.com"

直接回车3下,什么也不要输入,就是默认没有密码。

注意 github 和 gitlab 的文件名是不同的。

2)GitLab 的钥匙

ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "abcdef@qq.com"

2)Gitee 的钥匙

ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "abcdef@qq.com"

3)完成后会在~/.ssh / 目录下生成以下文件

  • id_rsa.github
  • id_rsa.github.pub
  • id_rsa.gitlab
  • id_rsa.gitlab.pub

3.添加识别 SSH keys 新的私钥

亲测Mac下,新增一个 id_rsa.gitee,没加进去 也识别到了。 所以此步骤可忽略,如有问题删除所有密钥 重新按步骤操作一遍。

默认只读取 id_rsa,为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中

$ ssh-agent bash
$ ssh-add ~/.ssh/id_rsa.github
$ ssh-add ~/.ssh/id_rsa.gitlab
$ ssh-add ~/.ssh/id_rsa.gitee

4. 多账号必须配置 config 文件(重点)

若无 config 文件,则需创建 config 文件

创建config文件

$ touch ~/.ssh/config

config 里需要填的内容

亲测可以不缩进,所以方便看,建议缩进。

最简配置

Host github.com
HostName github.com
IdentityFile ~/.ssh/id_rsa.github

完整配置

#Default gitHub user Self
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa.github #Add gitLab user
Host git@gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa.gitlab # gitee
Host gitee.com
Port 22
HostName gitee.com
User git
IdentityFile ~/.ssh/id_rsa.gitee # other settings
Host git@git.startdt.net
Port 22
HostName http://git.startdt.net
User git
IdentityFile ~/.ssh/lab_rsa.startdt

下面对上述配置文件中使用到的配置字段信息进行简单解释:

  • Host
    它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。
    这里可以使用任意字段或通配符。
    当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。

  • Port
    自定义的端口。默认为22,可不配置

  • User
    自定义的用户名,默认为git,可不配置

  • HostName
    真正连接的服务器地址

  • PreferredAuthentications
    指定优先使用哪种方式验证,支持密码和秘钥验证方式

  • IdentityFile
    指定本次连接使用的密钥文件

5.在 github 和 gitlab 网站添加 ssh

Github

 
Github 添加SSH公钥

直达地址:https://github.com/settings/keys

过程如下:

  1. 登录 Github
  2. 点击右上方的头像,点击 settings
  3. 选择 SSH key
  4. 点击 Add SSH key

在出现的界面中填写 SSH key 的名称,填一个你自己喜欢的名称即可。
将上面拷贝的~/.ssh/id_rsa.xxx.pub文件内容粘帖到 key 一栏,在点击 “add key” 按钮就可以了。

添加过程 github 会提示你输入一次你的 github 密码 ,确认后即添加完毕。

Gitlab

 
Gitlab 添加SSH公钥

直达地址:https://gitlab.com/profile/keys

  1. 登录 Gitlab
  2. 点击右上方的头像,点击 settings
  3. 后续步骤如 Github

Gitee / 码云

 
码云 添加SSH公钥

直达地址:https://gitee.com/profile/sshkeys

  1. 登录 Gitee
  2. 点击右上方的头像,点击 设置
  3. 后续步骤如 Github

添加过程 码云 会提示你输入一次你的 Gitee 密码 ,确认后即添加完毕。

6.测试是否连接成功

由于每个托管商的仓库都有唯一的后缀,比如 Github 的是 git@github.com:*。

所以可以这样测试:
ssh -T git@github.com

而 gitlab 的可以这样测试:
ssh -T git@gitlab.corp.xyz.com
如果能看到一些 Welcome 信息,说明就是 OK 的了

$ ssh -T git@github.com

Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.
Hi dragon! You've successfully authenticated, but GitHub does not provide shell access. $ ssh -T git@gitlab.com The authenticity of host 'gitlab.com (35.231.145.151)' can't be established.
ECDSA key fingerprint is SHA256:HbW3g8zUjNSksFbqTiUWPWg2Bq1x8xdGUrliXFzSn.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitlab.com,35.231.145.151' (ECDSA) to the list of known hosts.
Welcome to GitLab, @dragon! $ ssh -T git@gitee.com The authenticity of host 'gitee.com (116.211.167.14)' can't be established.
ECDSA key fingerprint is SHA256:FQGC9Kn/eye1W8icdBgrp+KkGYoFgbVr17bmjeyc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'gitee.com,116.211.167.14' (ECDSA) to the list of known hosts.
Hi 我是x! You've successfully authenticated, but GITEE.COM does not provide shell access.

结果如果出现这个就代表成功:

  • GitHub -> successfully
  • GitLab -> Welcome to GitLab
  • Gitee -> successfully

测试 clone 项目

$ git clone git@gitlab.com:d-d-u/java-xxx.git
Cloning into 'java-basic'...
remote: Enumerating objects: 3, done.
remote: Counting objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)
Receiving objects: 100% (3/3), done.

7.操作过程出现的问题/报错

tilde_expand_filename: No such user

检查是否成功的时候,报错:tilde_expand_filename: No such user .

$ ssh -T git@github.com
tilde_expand_filename: No such user .

解决方法:

此问题是因为写错了文件路径 或者 大小写没写对,删除重新配置,或者复制我的改好粘贴进去。

8. 参考链接

转载链接:https://www.jianshu.com/p/68578d52470c

配置同时使用 Gitlab、Github、Gitee(码云) 共存的开发环境的更多相关文章

  1. git同步代码至github和gitee(码云)

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/git-to-g ...

  2. GitHub和码云gitee及远程仓库管理

    目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...

  3. API Studio 5.1.2 版本更新:加入全局搜索、支持批量测试API测试用例、读取代码注解生成文档支持Github与码云等

    最近在EOLINKER的开发任务繁重,许久在博客园没有更新产品动态了,经过这些日子,EOLINKER又有了长足的进步,增加了更多易用的功能,比如加入全局搜索.支持批量测试API测试用例.读取代码注解生 ...

  4. 我把代码开源、托管到了GitHub、码云

    前言 学习了那么多知识点,写了那么多代码,一直都没有时间整理,之前都是新学一个知识点就在同一个工程项目中进行实践测试,导致这个工程越来越臃肿.越来越乱,连我自己都快看不懂了... 这段时间整理了部分代 ...

  5. Python集成开发环境Pycharm+Git+Gitee(码云)

    ********************************************************************* 本文主要介绍集成开发环境的配置过程,方便多人协作办公.代码版 ...

  6. 将本地项目或代码上传到别人GitHub(码云)的远程分支上

    今天碰到了这样一个问题,折腾了半天,就是将自己本地代码上传到人家的远程分支上. 首先要做的就是先将人家的项目克隆到本地:git clone + 项目地址 然后进入项目目录:cd + 已克隆好的项目目录 ...

  7. Git同步更新操作GitHub和码云仓库上面的代码

    一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...

  8. 使用Git GUI工具 上传本地仓库到 gitee码云仓库

    前言: 网上关于git的命令操作与使用很多教程和博客,在使用git工具时我发现有一个 git Gui 可视化工具,我觉得十分的亲切,由于我之前一直是使用svn作为版本控制管理工具,都是可视化操作,使用 ...

  9. 用git上传项目到GitHub或者码云全过程

    用git上传项目到GitHub或者码云全过程 1. 会生成一个隐藏文件夹".git".这是一个不可删文件,因为暂存区和历史区还有一些其他的信息都在这里,删掉就不是一个完整的仓库了 ...

随机推荐

  1. Swift零基础教程2019最新版(一)搭建开发环境

    Swift简单介绍 Swift是苹果强力推荐的新型开发语言,能开发苹果下属所有软件平台(iOS,iPadOS,macOS,watchOS,tvOS)初学者如果想进入苹果的开发体系,从Swift开始学习 ...

  2. oracle常用查询sql

    oracle常用查询sql 原创 gordon陈 发布于2018-05-10 22:32:18 阅读数 297 收藏 展开 #!/bin/sh## create by Gordon Chen echo ...

  3. Error 1327 Invalid Drive 的解决办法

    出现场景:     当我在安装STM32公司的 STM32 ST-LINK Utility v4.5.0 软件时,弹出了这个错误.弹框的内容大体是说找不到D盘,这里忘记截图了. 我的电脑的硬盘是我另一 ...

  4. YUM命令总结

    1.关于YUM源 Yum 全称为 Yellow dog Updater Modified,它是一个在线的软件安装命令. 能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装 ...

  5. 公司员工表示 nginx 之父被警方带走

    ZDNet 12 日报导,俄罗斯警方当天突击搜查了 NGINX 公司(nginx 服务器项目商业化公司)在莫斯科的办事处,并带走了 NGINX 公司联合创始人 Igor Sysoev 与 Maxim ...

  6. openjdk源码下载

    http://hg.openjdk.java.net/jdk8u/jdk8u60/jdk/file/935758609767 browse>zip

  7. [WPF]实现TextBox文本框单击全选

    原文:[WPF]实现TextBox文本框单击全选 /// <summary>         /// Void:设置获取焦点时全选文本         /// </summary&g ...

  8. HTML连载48-清除浮动的其中两种方式

    一.清除浮动的方式一 给前面一个父元素设置高度,​注意:企业开发中能不写高度就不写高度 <!DOCTYPE html> <html lang="en"> & ...

  9. linux 主机通过虚拟机(win10)上网

    公司内网必须安装安全软件(exe)才可以上网,但是我的系统是deepin,用deepin-wine无法安软该exe,于是用vmware安装了win10虚拟机,通过虚拟机上网 先简单介绍下vmware以 ...

  10. 【文本处理命令】之find搜索命令

    一.find搜索命令 find命令用于按照指定条件查找文件.在系统工作中find命令是不可缺少的,我们一般要查找某个目录下的文件时,都是使用find命令查找,另外find命令也可以配合对查找出的文件进 ...