背景:在该gitlab main path下原本是链接了一个http的子仓库SDK,但是由于要使用持续集成工具Jenkins检查merge的代码是否编译通过、是否单元测试通过等,因此需要将子仓库SDK的链接引用改为SSH的。改链接引用很容易,将git main path下的.gitmodules文件里的url改为SSH的就好。
但是遇到了一个问题:重新在本地Git Clone main path,右键点击Submodules update,提示要输入gitlab的密码,输入密码后还是弹出输入密码的框。在网上搜索了一些方法,但是不够详细,走了好多弯路,所以记录下配置SSH的详细过程吧。
配置SSH
1. win+r输入cmd打开cmd运行窗口输入,git config --global user.name "你的gitlab用户名",回车,输入git config --global user.email "你的gitlab邮箱",回车;
gitlab用户名和gitlab邮箱可以在这里看到
2. 输入git config --global --list,回车,这一步知识看下前面的步骤有没有成功;
3. 输入ssh-keygen,连续3次回车,成功之后id_rsa,id_rsa.pub两个文件默认在C:\Users\username/.ssh目录下,cmd运行窗口也显示了文件路径。
ps:如果输入命令ssh-keygen回车显示“ssh-keygen 不是内部或外部命令,也不是可运行的程序xxx”,那么在本地main code文件夹下右键选择Git Bash Here,输入ssh-keygen就可以了,盲猜可能是之前环境变量没配好。
4. 打开id_rsa.pub,复制ssh key
法一:直接用UltraEdit打开id_rsa.pub,复制所有内容;
法二:在本地main code文件夹下右键选择Git Bash Here,输入cat ~/.ssh/id_rsa.pub,回车,
复制以ssh-rsa开头的这段ssh key;
5. 将ssh key填写到gitlab SSH Keys上。
6. 生成.ppk;打开PuTTYgen -> 点击load,选择.ssh/id_rsa -> 点击Save private key,保存ppk文件到.ssh目录下;
7. 本地新建文件夹load ssh path,输入gitlab的个人密码,成功clone sdk到本地;
8. clone main path到本地
(1)clone main path(http);
(2)将生成的.ppk加到Git putty key;
(3)在本地main仓库下右键pull;
(4)右键submodules update将sdk子仓库(ssh)拉取到本地。
正常情况下是能成功克隆到本地的。
异常情况
但是我的笔记本电脑出现了以下问题:
1、TortoiseGitPlink.exe:No such file or directory,fatal:unable to folk.
解决方法:搜索TortoiseGit -> 打开文件位置 -> 打开文件所在位置 -> 复制粘贴文件夹
2、在Git Bash窗口输入git submodul update,出现下图所示的弹框,弹框上提示这个host不能被建立,ED25519 Key是xxx,该问题在问题1解决后也解决了;
3、clone代码报错:error: cannot spawn C:\ProgramData\Microsoft\Windows\Start Menu\Programs\TortoiseGit: Permission denied
原因:之前安装过TortoiseGit,但是残留文件没有清除
解决方法:打开C:\ProgramData\Microsoft\Windows\Start Menu\Programs\TortoiseGit,找到其快捷键,打开文件所在位置,复制其路径,粘贴到下图所示的位置应用即可。
其他问题
Q1. 台式电脑有konwn_hosts,而笔记本没有
A1: known_hosts 是通过ssh去生成的,当你通过ssh去连接到远程的服务器的时候就会生成它。
Q2:生成的xx.ppk是什么?
A1:ppk是由公钥id_rsa.pub和私钥id_rsa生成的程序;