为了将本地仓库备份到Github上的远程仓库,实现文件备份和多机协同工作的功能则需要了解远程仓库的管理。
一、生成SSH Key
- SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。简单说,SSH是一种网络协议,用于计算机之间的加密登录。
- 其次,SSH key提供了一种与GitHub通信的方式,实现本地git仓库到github上远程仓库的安全传输。通过SSH Key,能够在不输入密码的情况下,将GitHub作为自己的远程服务器,进行版本控制。
1.检查SSH key是否存在于本机
- 在linux或者windows的的用户目录下查看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到步骤3。
2.生成新的SSH key
- 打开Shell(Windows下打开Git Bash),创建SSH Key。
ssh-keygen -t rsa -C "youremail@example.com"
youremail@example.com:
注:网上有部分博客说邮箱要填自己的github注册邮箱,其实是扯淡。因为-C 后面的内容指的是该密钥是注释内容,也就是可选操作,所以邮箱填不填都是无所谓的。
之后一直回车就ok,然后可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。
3.将SSH Key添加到GitHub中
打开github页面上的“Account settings”,“SSH Keys”选项,选择“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容即可。
注:如果需要实现多台机器都快对github上的远程仓库实现git托管,则需要将这些机器的公钥都添加到github中。
4.测试SSH Key是否成功
使用命令“ssh -T git@github.com”,如果出现You’ve successfully authenticated, but GitHub does not provide shell access 。这就表示已成功连上github。
二、远程仓库的添加(先有本地库后有远程仓库的情况)
在GitHub上创建远程仓库,既可以用作本地Git仓库的备份,还可以作为一个远程仓库,实现多人协同办公的功能。
1.在GitHub上创建一个空的仓库
2.本地仓库与远程仓库关联
- 空仓库创建好后,可以从这个仓库克隆出新的仓库到本地然后与之关联。
- 本地有文件的仓库与github上的远程仓库关联,然后将本地Git仓库的文件推到github上。
打开Shell(Windows下打开Git Bash),进入到本地Git仓库所在路径,然后使用以下命令使其与GitHub上的远程仓库关联。
方式一
git remote add origin https://github.com/用户名/远程仓库名.git
方式二
git remote add origin git@github.com:用户名/远程仓库名.git
- 用户名填写自己的GitHub账户名,远程仓库名为刚刚自己创建的仓库的名称。
- https://github.com/用户名/远程仓库名.git表示的使远程仓库的地址。
添加后,远程库的名字就是origin,这是Git默认的叫法,也可以改成别的,但是origin这个名字一看就知道是远程库。
3.本地仓库的所有文件推送到github远程仓库上
git push -u origin master
后续使用过程中如果提交更新的文件需要推送到远程仓库,则使用git push origin master即可。
备注
当第一次使用Git的clone或者push命令连接GitHub时,会得到一个警告。这是因为Git使用SSH连接,而SSH连接在第一次验证GitHub服务器的Key时,需要你确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
确认方式:输入yes前可以对照GitHub的RSA Key的指纹信息是否与SSH连接给出的一致。
Git会输出一个警告,告诉你已经把GitHub的Key添加到本机的一个信任列表里了。
三、先有远程仓库后有本地仓库的情况,使用克隆方式
从零开发,那么最好的方式是先创建远程库,然后克隆远程仓库到本地。
1.在本地创建一个文件夹,进入该文件的路径
注:不必新建一个空的Git仓库,然后从远程仓库克隆。
2.使用如下指令克隆远程仓库
方式1:
git clone git@github.com:用户名/远程仓库名称.git
方式2:
git clone https://github.com/用户名/远程仓库名.git
两种方式都可以,这是因为git支持多种协议,默认的git://使用ssh,但也可以使用https等其他协议。
使用https除了速度慢以外,还有个最大的麻烦是每次推送都必须输入口令,但是在某些只开放http端口的公司内部就无法使用ssh协议而只能用https。