git连接远程仓库
基础配置
获取自己的SSH Key
git安装过程省略。
- 第1步,查看系统本用户路径下有没有
.ssh
目录,比如我的目录是C:\Users\Shawn\.ssh
,有的话跳到第3步; - 第2步,创建SSH Key。在任意位置打开Git Bush终端,运行下面的示例命令,注意要输入你的email地址。
ssh-keygen -t rsa -C "youremail@example.com"
- 第3步,查看
.ssh
目录,可以看到里面有id_rsa
和id_rsa.pub
两个文件。id_rsa
是私钥,不能泄露出去,id_rsa.pub
是公钥,待会要用到
具体这两个东西代表什么含义,这里不讨论。在GitHub中添加SSH Key
- 第1步,登陆GitHub,右上角个人头像,选择setting进入设置页面;
- 第2步,选择
SSH and GPG keys
选项,可看到你自己目前的ssh信息。我自己添加了两条,一条是公司电脑,一条是家里电脑。
- 第3步,点击
New SSH key
,添加一个SSH Key; - 第4步,用编辑器打开本地的公钥
id_rsa.pub
文件,全部复制粘贴到Key
栏,输入名称,保存,就可以成功添加一条SSH Key。
- 已有GitHub远程仓库,拉取到本地做开发;
- 本地的项目想丢到GitHub上;
- GitHub有仓库,本地也有项目,想合并到一块。
这种情况很简单,直接拉取到本地就可以,具体操作是:
- 获取到远程仓库的地址,如:
git@github.com:yourGitHubId/testRepo.git
; - 在指定路径下打开Git Bush终端,运行命令
git clone git@github.com:yourGitHubId/testRepo.git
这里可能会提示情况2:本地的项目想丢到GitHub上The authenticity of host 'github.com (13.229.188.59)' can't be established.
类似的命令,运行yes
就好了 ——— 参考博客
这种情况挺常见的,就是我本地开发的一个东西,想分享到GitHub,或者想多端同步,在其他电脑上/其他人参与开发。这种情况比前一种要复杂,操作如下:
- 第1步,创建本地仓库,并提交当前所有修改到本地仓库。
- 第2步,创建远程仓库,空白仓库。创建完成后,仓库页面会有连接提示,复制仓库地址。
- 第3步,连接远程仓库,把本地仓库与远程仓库连接起来,运行命令:
git remote add online git@github.com:yourGitHubId/testRepo.git
,这里add后面的online是随便取的,官方习惯用origin,我这里用online,然后运行gir remote -v
查看当前连接的远程仓库信息。
- 第4步,本地文件首次提交到远程仓库,运行命令
git push -u online master
,完成后就可以在远程仓库中看到这些文件了,之后的提交不需要加-u
。
如果不是创建了空白仓库,比如添加了Readme文件,可能会出现情况3:GitHub有仓库,本地也有项目,想合并到一块-refusing to merge unrelated histories
这种报错,这种属于情况3的讨论范畴。
- 第1步,创建本地仓库,并提交当前所有修改到本地仓库;
- 第2步,连接远程仓库。运行命令:
git remote add origin git@github.com:yourGitHubId/testRepo.git
,可以看到远程仓库信息。
- 第3步,从拉取远程仓库文件,跟上一种情况不一样,前面是直接推送到远程空白仓库,现在是先从远程仓库拉取文件,正常拉取的命令是
git pull origin master
,git报警告fatal: refusing to merge unrelated histories
,意思是“拒绝合并不相关的历史”。因此要强行合并,使用命令git pull origin master --allow-unrelated-histories
,拉取搞定。
- 第4步,冲突解决。拉取远程仓库文件,很有可能会出现冲突,按照普通冲突的办法解决,然后提交本地仓库。
- 第5步,推送远程仓库,完成后可以在远程仓库中查看新修改。
“拒绝合并不相关的历史”的解决,参考这篇博客。以上,就是我在工作学习过程中,有关GitHub远程仓库连接的一些探索,希望可以有帮助。
参考文章
- 廖雪峰-Git教程
- 记Git报错-refusing to merge unrelated histories
- git---如何解决The authenticity of host 'github.com (192.30.255.112)' can't be established
推荐阅读
- CVE-2020-16898|CVE-2020-16898 TCP/IP远程代码执行漏洞
- gitlab|gitlab 通过备份还原 admin/runner 500 Internal Server Error
- gitlab|Gitlab升级(12.2.1到14.6.4)
- py连接mysql
- Android|Android BLE蓝牙连接异常处理
- 常用git命令总结
- springboot整合数据库连接池-->druid
- Python3|Python3 MySQL 数据库连接
- Xshell5|Xshell5 远程连接本地虚拟机Ubuntu16
- 为Google|为Google Cloud配置深度学习环境(CUDA、cuDNN、Tensorflow2、VScode远程ssh等)