基础配置
获取自己的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。
连接远程仓库
我平常遇到的有3种情况:
- 已有GitHub远程仓库,拉取到本地做开发;
- 本地的项目想丢到GitHub上;
- GitHub有仓库,本地也有项目,想合并到一块。
情况1:已有GitHub远程仓库,拉取到本地做开发
这种情况很简单,直接拉取到本地就可以,具体操作是:
- 获取到远程仓库的地址,如:
git@github.com:yourGitHubId/testRepo.git
; - 在指定路径下打开Git Bush终端,运行命令
git clone git@github.com:yourGitHubId/testRepo.git
这里可能会提示
The authenticity of host 'github.com (13.229.188.59)' can't be established.
类似的命令,运行yes
就好了 ——— 参考博客
情况2:本地的项目想丢到GitHub上
这种情况挺常见的,就是我本地开发的一个东西,想分享到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文件,可能会出现
-refusing to merge unrelated histories
这种报错,这种属于情况3的讨论范畴。
情况3:GitHub有仓库,本地也有项目,想合并到一块
- 第1步,创建本地仓库,并提交当前所有修改到本地仓库;
- 第2步,连接远程仓库。运行命令:
git remote add origin git@github.com:yourGitHubId/testRepo.git
,可以看到远程仓库信息。如果报错,会报
git remote add origin**************
fatal: remote origin already exists.(报错远程起源已经存在。)
上网查了下,有很多小白遇到过这个问题,以下是网上摘取的解决办法,
解决办法如下:
1、先输入 git remote rm origin
2、再输入 git remote add origin**************
这样就不会报错了!
-
第3步,从拉取远程仓库文件,跟上一种情况不一样,前面是直接推送到远程空白仓库,现在是先从远程仓库拉取文件,正常拉取的命令是
git pull origin master
,git报警告fatal: refusing to merge unrelated histories
,意思是“拒绝合并不相关的历史”。因此要强行合并,使用命令git pull origin master --allow-unrelated-histories
,拉取搞定。 -
第4步,冲突解决。拉取远程仓库文件,很有可能会出现冲突,按照普通冲突的办法解决,然后提交本地仓库。
-
第5步,推送远程仓库,完成后可以在远程仓库中查看新修改。
总结:如果想本地的内容推送到已有的github仓库,根据第三种情况可知,仍然要pull之后再push,所以还是先pull已有的仓库到本地,在把文件复制到本地的git仓库,在push到远程仓库
网友评论