配置同时使用 Gitlab、Github、Gitee(码云) 共存的开发环境
首先确认已安装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.name
和 user.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
直达地址:https://github.com/settings/keys
过程如下:
- 登录 Github
- 点击右上方的头像,点击
settings
- 选择
SSH key
- 点击
Add SSH key
在出现的界面中填写 SSH key 的名称,填一个你自己喜欢的名称即可。
将上面拷贝的~/.ssh/id_rsa.xxx.pub
文件内容粘帖到 key 一栏,在点击 “add key” 按钮就可以了。
添加过程 github 会提示你输入一次你的 github 密码 ,确认后即添加完毕。
Gitlab
直达地址:https://gitlab.com/profile/keys
- 登录 Gitlab
- 点击右上方的头像,点击
settings
- 后续步骤如 Github
Gitee / 码云
直达地址:https://gitee.com/profile/sshkeys
- 登录 Gitee
- 点击右上方的头像,点击
设置
- 后续步骤如 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
- ssh -T git@gitlab.com
- ssh -T git@gitee.com
$ 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(码云) 共存的开发环境的更多相关文章
- git同步代码至github和gitee(码云)
注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/git-to-g ...
- GitHub和码云gitee及远程仓库管理
目录 备注: 知识点 GitHub 码云(gitee.com) gitee的使用 本地版本库关联多个远程库 备注: 本文参考于廖雪峰老师的博客Git教程.依照其博客进行学习和记录,感谢其无私分享,也欢 ...
- API Studio 5.1.2 版本更新:加入全局搜索、支持批量测试API测试用例、读取代码注解生成文档支持Github与码云等
最近在EOLINKER的开发任务繁重,许久在博客园没有更新产品动态了,经过这些日子,EOLINKER又有了长足的进步,增加了更多易用的功能,比如加入全局搜索.支持批量测试API测试用例.读取代码注解生 ...
- 我把代码开源、托管到了GitHub、码云
前言 学习了那么多知识点,写了那么多代码,一直都没有时间整理,之前都是新学一个知识点就在同一个工程项目中进行实践测试,导致这个工程越来越臃肿.越来越乱,连我自己都快看不懂了... 这段时间整理了部分代 ...
- Python集成开发环境Pycharm+Git+Gitee(码云)
********************************************************************* 本文主要介绍集成开发环境的配置过程,方便多人协作办公.代码版 ...
- 将本地项目或代码上传到别人GitHub(码云)的远程分支上
今天碰到了这样一个问题,折腾了半天,就是将自己本地代码上传到人家的远程分支上. 首先要做的就是先将人家的项目克隆到本地:git clone + 项目地址 然后进入项目目录:cd + 已克隆好的项目目录 ...
- Git同步更新操作GitHub和码云仓库上面的代码
一.前言 问题: 小编在生活中,一般都是将代码保存到github上,但由于国内的码云仓库确实速度比github快很多,用起来也很方便,于是后来就慢慢转码云了,当然小编在github上的代码也不想放弃更 ...
- 使用Git GUI工具 上传本地仓库到 gitee码云仓库
前言: 网上关于git的命令操作与使用很多教程和博客,在使用git工具时我发现有一个 git Gui 可视化工具,我觉得十分的亲切,由于我之前一直是使用svn作为版本控制管理工具,都是可视化操作,使用 ...
- 用git上传项目到GitHub或者码云全过程
用git上传项目到GitHub或者码云全过程 1. 会生成一个隐藏文件夹".git".这是一个不可删文件,因为暂存区和历史区还有一些其他的信息都在这里,删掉就不是一个完整的仓库了 ...
随机推荐
- FCC---Use the CSS Transform scale Property to Change the Size of an Element
To change the scale of an element, CSS has the transform property, along with its scale() function. ...
- http请求post,文件导出兼容IE10+
1.post的方法里要加responseType: 'blob'参数,不然下载的excel会乱码 2.使用{type: "application/vnd.ms-excel"}的写法 ...
- 记录Android开发中遇到的坑
1. 出现错误提示:Intel HAXM is required to run this AVD,VT-x is disabled in BIOS的解决办法. 点击SDK图标,安装Intel x86 ...
- Mac使用iTerm2 一键免密登录
iTerm是mac平台很好用的ssh管理工具,今天给大家介绍一种使用iTerm一键登陆服务器优雅的方式,这样就不需要每次连接服务器时都需要输入端口号.用户名.ip地址.密码(为了安全,服务器密码都好长 ...
- [20191101]通过zsh计算sql语句的sql_id.txt
[20191101]通过zsh计算sql语句的sql_id.txt 1.简单介绍以及测试使用zsh遇到的问题:--//前段时间写的,链接http://blog.itpub.net/267265/vie ...
- Linux:LAMP环境的搭建
LAMP环境的搭建 安装DNS服务器 安装DNS服务 yum install bind -y DNS的配置 创建正向解析 以创建一个名为"lsy.com"的正向查找区域为例: 第一 ...
- Less(1)
1.先判断注入类型 (1)首先看到要求,要求传一个ID参数,并且要求是数字型的:?id=1 (2)再输入?id=1' 发现报错 (3)输入?id=1'' 单引号报错,双引号正常显示,判断是字符型注入: ...
- 模拟ssh远程执行命令
目录 一.服务端 二.客户端 一.服务端 from socket import * import subprocess server = socket(AF_INET, SOCK_STREAM) se ...
- python的__future__模块
一.概述 Python的每个新版本都会增加一些新的功能,或者对原来的功能作一些改动.有些改动是不兼容旧版本的,也就是在当前版本运行正常的代码,到下一个版本运行就可能不正常了.从Python 2.7到P ...
- Spring Boot 2.2.0新特性
Spring Boot 2.2.0 正式发布了,可从 repo.spring.io 或是 Maven Central 获取. 性能提升 Spring Boot 2.2.0 的性能获得了很大的提升. ...