git——使用远程仓库(先有本地仓库再有远程仓库 GitHub)

1.由于本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,所以需要先设置SSH

1. 创建SSH Key。在用户主目录(一般路径为C:\Users\用户名)下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),使用命令ssh-keygen -t rsa -C "youremail@example.com"创建SSH Key。
ssh-keygen -t rsa -C "youremail@example.com"
  • 把邮件地址换成自己的邮件地址,然后一路回车,使用默认值即可,由于这个Key也不是用于军事目的,所以也无需设置密码
  • 创建成功后,可以在用户主目录里找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
2.登陆GitHub,打开“Account settings”,“SSH Keys”页面:然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容
  • 为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。

  • 当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。

  • 最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)。所以,不要把敏感信息放进去。

2.已创建本地仓库,需要添加远程仓库并与本地仓库建立连接,并进行远程同步

1.首先在github上创建一个远程仓库,在网站上创建即可,注意不要勾选Initialize this repository with a README(如果勾选了,按接下来的步骤会出错,后文有处理办法)

在这里插入图片描述

2.之后在本地的learngit仓库下运行命令git remote add origin git@github.com:michaelliao/learngit.git注意需要把上面的michaelliao替换为自己的GitHub账户名与仓库名
git remote add origin git@github.com:michaelliao/learngit.git
  • 没有输出代表正常
  • 添加后,远程库的名字就是origin,这是Git默认的叫法,
3.将本地仓库的所有内容推送到远程库上,使用命令git push -u origin master
git push -u origin master
  • 由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令

  • 推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样

  • 从现在起,只要本地作了提交,就可以通过命令:git push origin master,把本地master分支的最新修改推送至GitHub

git push origin master

3.其他情况

1. SSH警告
  • 当你第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告:
The authenticity of host 'github.com (xx.xx.xx.xx)' can't be established.
RSA key fingerprint is xx.xx.xx.xx.xx.
Are you sure you want to continue connecting (yes/no)?
  • 这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。

  • Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了:

Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
2.如果在创建远程仓库时勾选创建了README文件,在使用pull命令时会报错:
fatal: refusing to merge unrelated histories
(拒绝合并不相关的历史)

在这里插入图片描述

问题原因:
  • 出现这个问题的最主要原因还是在于本地仓库和远程仓库实际上是独立的两个仓库。假如之前是直接clone的方式在本地建立起远程github仓库的克隆本地仓库就不会有这问题了。
解决办法:
  • 可以在pull命令后紧接着使用--allow-unrelated-history选项来解决问题(该选项可以合并两个独立启动仓库的历史)。即命令:
git pull origin master --allow-unrelated-histories

在这里插入图片描述

解决方法参考:记Git报错-refusing to merge unrelated histories

4.小结

  1. 要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git
git remote add origin git@server-name:path/repo-name.git
  1. 关联后,使用命令git push -u origin master第一次推送master分支的所有内容;
git push -u origin master
  1. 此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;
git push origin master

参考:https://www.liaoxuefeng.com/wiki/896043488029600/896954117292416

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值