前言
很多开发者才刚接触 Git 的时候,看到各种命令和报错信息,经常一头雾水。即便是反复搜索和看文档,也很难快速定位分析问题并解决。
不同平台不同环境下,即便是同样的报错信息,解决办法也不尽相同,这给广大 Git 初学者带来了极大的困扰。
因此,我挑选出大家最常遇到的问题,给出了通用性的解决方案,以及常见报错信息的排查方式。
本文教程是在 Windows 平台下操作的,Mac OS X 和 Linux 平台操作大体相同。
前面的内容比较基础,有经验的开发者可选择性跳过,直接定位到【多平台的SSH配置】阅读。
如有需要补充或不准确的地方,欢迎大家在评论区指正。
准备工作
首先你要在本地安装 Git,最新版本可以在官网获取:
https://git-scm.com/
下载前需要根据电脑系统版本,选择合适平台的 Git 版本。
我目前用的是 Windows 10 ,点击右侧按钮,下载 Windows 版本安装即可。
如果你的系统是 Mac OS X ,下载页面是这样的:
除了首页的推荐下载,也可以自行选择下载的版本,以及安装方式。
下载地址:https://git-scm.com/downloads
安装完成后,打开系统命令行工具(以 cmd 为例),输入 git --version 并回车,可以查看到当前 git 版本。
看到版本信息后,说明Git已经顺利安装,可以正常使用,接下来我们可以进行后续的操作了。
单平台的SSH配置
进入本地.ssh目录
打开命令行工具,输入命令:cd C:Users<你的用户名>.ssh
进入SSH key文件存放目录。
这一步很关键,一定要先进入目录。
如果你是在其他路径下生成的,后续是无法注册成功的。
本地 Git 命令创建生成 SSH key
打开终端命令行工具,输入以下命令:
ssh-keygen -t rsa -C "youmaIl@mail.com"
其中"youmaIl@mail.com"部分,需要替换成自己的邮箱,回车后就能成功创建一个key。
接着是给key单独设置一个文件名,默认是 id_rsa,会保存在系统用户目录下的.ssh文件夹中。
如果直接回车,那么就会生成两个文件,分别是 id_rsa(私钥) 和 id_rsa.pub(公钥)。
这里我建议为Github平台设置单独的名称,如 id_rsa_github ,这样可以将SSH key跟平台一一对应,便于日后多平台 SSH key 的管理。
> 注意:ssh key的文件名只能是id_rsa_xxx的方式命名,否则在后续的连接过程中,代码平台会因为不识别,从而导致终端出现报错信息。
我这里起的名字是 id_rsa_github666 。
键入回车后出现这个提示,可以设置为空,直接回车就好
这个步骤类似与网站注册时的设置密码和重复密码十分相似,设置两次密码,防止出错,这样就很好理解了。
再次提示依旧是回车,选择为空。接下来就可以看到设置成功的提示
完整的四个步骤是这样的,如下图所示:
终端切换到 bash
接下来需要用到ssh相关的命令,由于系统自带的命令行是不支持的,因此我们需要切换到bash。
如果是mac用户,可以直接使用ssh-agent bash切换到bash环境。
而Windows用户相对麻烦一些,需要在.ssh文件夹中的空白处右键,呼出右键菜单。
紧接着点选【Git Bash Here】,启动 bash 命令行,可以看到已经在.ssh目录下了。
键入命令 ssh-agent 回车,发现没有提示,此时说明命令是生效了。
然后键入命令 ssh-add id_rsa_github666 (id_rsa_github666 是 SSH key文件名)
出现提示后,说明 SSH key 本地添加注册成功。
连接到代码平台(以 Github 为例)
以 Github 为例,按照以下几个简单步骤,就可以轻松搞定本地Git与Github的连接。
浏览器访问Github官方网站:https://github.com/
输入账号密码登录。(没有的话需要提前注册一个)
登录成功后,点击右上角个人头像,点击 Settings ,进入设置页面。
创建 SSH keys
进入设置页面后,左侧栏选择【SSH and GPG keys】,进入SSH keys页面,可以看到历史创建过的SSH keys信息。
这里为了演示方便,我们点击右上角的【New SSH key】,进入创建页面。
进入这个页面后,看到有 Title 和 Key 两个字段需要填写。
回到 .ssh 目录,用文本编辑器(如Visual Studio Code)的方式打开。
全选内容后复制,粘贴到 Key 的文本框中,直接点击SSh Key即可。
直接点击生成,结果就是把Title名称默认设置成了你的邮箱地址。
如果你想自定义设置 Title 名称做区分,也是可以的。
验证代码平台连通性
在 bash 环境下,键入 ssh -T git@github.com
回车后,可以看到连通成功的欢迎提示:
到这里,本地 Git 与 Github 代码平台就已经打通了,可以进行正常的代码推送、拉取等操作了。
多平台的SSH配置
对初学者来说,通常一个 Github 平台就足够了,但实际工作中,往往会面临多平台的问题。
比如公司内部有自己服务器搭建的Gitlab,微信开发者工具也有自家的微信开发者代码管理平台(https://git.weixin.qq.com/users/authorize#wechat_redirect)。
每个平台都需要连接,而平台对应的 SSH key又是唯一的。
在这样的情况下,就不可避免的需要多个 SSH key,用来连接不同的平台。
如果按照默认文件名的方式,直接回车创建,那么其他平台还是需要单独的去新建命名SSH key文件的。
因此只要按照上面【单平台的SSH配置】操作,一步步走下来,每个SSH key都是独一无二互不干扰的。
这样即便是有10个、100个类似的代码托管平台,仍然可以保证本机与各平台之间的连通性。
这里我给出完整的命令操作,以后可以直接存入笔记本,需要时随时调出来查阅使用:
代码语言:javascript复制cd C:Users<你的用户名>.ssh # 进入指定路径
ssh-keygen -t rsa -C "cooperx@foxmail.com" # 注册用户名邮箱
# 自定义设置用户名
# 两次回车确认密码
------------------------------------------------------------------------------------------
# 切换终端到bash环境(Windows下在.ssh目录右键打开git bash进入)
ssh-agent bash # 没有提示代表切换成功,这一步不可或缺
ssh-agent id_rsa_xxx # 添加注册ssh,提示 Indentity 为成功
-----------------------------------------------------------------------------------------
ssh -T git@xxxxxx.com # 测试代码平台连通性,注意T是大写
常见问题
为什么提示ssh key生成成功,但无法通过ssh-add添加注册?
这是由于之前ssh key生成的密钥文件不在 .ssh 目录下,命令行先进入到目录后,再重新操作一遍就好了。
出现信息 hosts "xxx" can't be established 是什么意思?
这个不是报错,而是第一次连接会出现的正常提示,一般回车就可以解决。
如果还是解决不了,那么可以在本地hosts文件中,加入一行ip地址和域名的映射关系。
例如:13.250.177.223 github.com
ip 地址可以在终端通过 ping github.com 来获取。
细心的你会发现,在.ssh文件夹下,会生成一个 know_hosts文件夹,在这里存放了代码托管平台的 host 信息。
为什么输入ssh-agent bash命令,会出现unable to start ssh-agent报错?
这是终端环境问题,切换到 bash 环境下再输入就正常了。
总结
作为一名前端开发工程师,Git 在日常工作中必不可少。如果涉及到多端多平台的开发,或者是在公司代码仓库和个人代码仓库之间频繁切换,那么多平台的SSH key配置是必要的。本文虽然看起来操作略微复杂,但实际上手起来十分轻松,严格按照步骤走,关注几个细节点,操作下来也能得心应手,再也不用为多个代码平台连接而烦恼了。
如果你喜欢本文,可以在文章下方互动评论,你的支持是我创作的最大动力。
(本文是【技术创作101训练营】参赛作品,创作内容版权归作者所有,转载请注明出处。)