VScode使用git版本控制
安装vscode和git
注册github
配置ssh公钥^2
为什么要配置
我们在往github上push项目的时候,如果走https的方式,每次都需要输入账号密码,非常麻烦。而采用ssh的方式,就不再需要输入,只需要在github自己账号下配置一个ssh key即可。
如何配置
git使用SSH配置, 初始需要以下三个步骤
使用秘钥生成工具生成rsa秘钥和公钥
将rsa公钥添加到代码托管平台
将rsa秘钥添加到ssh-agent中,为ssh client指定使用的秘钥文件
具体操作如下:
第一步:检查本地主机是否已经存在ssh key
1
2
3cd ~/.ssh
ls
//看是否存在 id_rsa 和 id_rsa.pub文件,如果存在,说明已经有SSH Key如果有id_rsa文件和id_rsa.pub文件说明存在
第二步:生成ssh key
如果不存在ssh key,使用如下命令生成
1
2ssh-keygen -t rsa -C "xxx@xxx.com" //git config user.email
//执行后一直回车即可RSA密钥默认长度是2048,最小768,你可以在最后一条命令中使用“-b xxx”指定密钥长度,eg:“-b 1024”指定1024长度,-t 是指类型,-C是指注释
第三步:获取ssh key公钥内容(id_rsa.pub)
1
2cd ~/.ssh
cat id_rsa.pub复制其内容
第四步:Github账号上添加公钥
settings -> ssh and gpg keys -> new ssh key
第五步:验证是否设置成功
1
ssh -T git@github.com
显示
Hi brucewayne9064! You've successfully authenticated, but GitHub does not provide shell access.说明成功设置成功后,即可不需要账号密码clone和push代码
注意之后在clone仓库的时候要使用ssh的url,而不是https!
原理解释
SSH登录安全性由非对称加密保证,产生密钥时,一次产生两个密钥,一个公钥,一个私钥,在git中一般命名为id_rsa.pub, id_rsa。
那么如何使用生成的一个私钥一个公钥进行验证呢?
本地生成一个密钥对,其中公钥(id_rsa.pub)放到远程主机,私钥(id_rsa)保存在本地
当本地主机需要登录远程主机时,本地主机向远程主机发送一个登录请求,远程收到消息后,随机生成一个字符串并用公钥加密,发回给本地。本地拿到该字符串,用存放在本地的私钥进行解密,再次发送到远程,远程比对该解密后的字符串与源字符串是否等同,如果等同则认证成功。
重点来了:一定要知道ssh key的配置是针对每台主机的!,比如我在某台主机上操作git和我的远程仓库,想要push时不输入账号密码,走ssh协议,就需要配置ssh key,放上去的key是当前主机的ssh公钥。那么如果我换了一台其他主机,想要实现无密登录,也就需要重新配置。
下面解释开头提出的问题:
(1)为什么要配?
配了才能实现push代码的时候不需要反复输入自己的github账号密码,更方便
(2)每使用一台主机都要配?
是的,每使用一台新主机进行git远程操作,想要实现无密,都需要配置。并不是说每个账号配一次就够了,而是每一台主机都需要配。
(3)配了为啥就不用密码了?
因为配置的时候是把当前主机的公钥放到了你的github账号下,相当于当前主机和你的账号做了一个关联,你在这台主机上已经登录了你的账号,此时此刻github认为是该账号主人在操作这台主机,在配置ssh后就信任该主机了。所以下次在使用git的时候即使没有登录github,也能直接从本地push代码到远程了。当然这里不要混淆了,你不能随意push你的代码到任何仓库,你只能push到你自己的仓库或者其他你有权限的仓库!
本地仓库和远程库的关联^3
二者的关联有以下2种方式:
如果我们从零开发,推荐先在GitHub上创建远程库,然后从远程库克隆到本地,这样两个仓库就可以同步
另一种是已经在本地创建了Git仓库,后想在GitHub上创建一个Git仓库,并让两个仓库远程同步
打开本地的项目目录,打开终端输入
git init,创建本地仓库创建github仓库
关联远程仓库,提交本地文件
关联远程仓库
1
git remote add origin git@github.com:brucewayne9064/LinuxCpp_server.git
将所有文件添加到暂存区
1
git add .
将暂存区内容添加到本地仓库
1
git commit -m "注释"
本地库推送到远程库
1
git push -u origin main

