HTML5学堂-利利:关于Git的知识,我们共分成了四个大步骤进行讲解,之前我们提到了Git的安装与配置、Git在本地的使用方法,今天我们要讲解的就是如何创建Git本地仓库与服务器端仓库的关系。
一图胜千言,先看下图:
HTML5学堂之前的第一篇Git的文章,书写的是关于Git的安装以及初始化等操作,第二篇Git的文章,书写的是如何在本地操作Git,今天我们就来讲解如何通过Git把代码从本地推送到服务器端;而后面我们还有一篇文章,就是关于Git的多人协作(由于利利当前事情比较多,所以一篇一篇来吧~)
GitHub服务器的搭建
SSH Key
本地创建SSH Key
GitHub上设置SSH Key,从而创建“关系”
在GitHub上创建仓库
在本地添加仓库
将本地库的内容发送到服务器的仓库
从Git上克隆文件
SSH警告
回看SVN与Git的区别
从GitHub中删除文件
我们可以将同一个Git仓库,分布到不同的机器上。在最早时,只有一台机器上存在一个原始的版本库,之后,其他的机器可以“复制”这个版本库,而且每台机器的版本库都是一样的,并没有主次之分。
在开发当中,我们会找一台电脑充当服务器的角色,24小时开机,其他每个人都可以从这个“服务器”将版本库中的文件,复制一份到自己的电脑,也能够将各自的文件,提交到服务器仓库里,也可以从服务器仓库中拉取别人提交的文件。
服务器方面,一种是自己搭建服务器,另一种是借助GitHub。关于GitHub的使用,请参照HTML5学堂之前的文章《GitHub的用法》。
我们可以在GitHub上放置我们的代码,由于GitHub是一个开源网站,因此上传的代码所有人都可以看到,默认也是不需要给GitHub缴费的。不过,只有用户自身才能够修改上传的代码。
HTML5学堂温馨提醒:由于GitHub中的代码所有人可见,所以建议不要把关于自己的私人信息或敏感信息放进去。
HTML5学堂温馨提醒:如果你不想让别人看到你的代码,可以给GitHub交“保护费”,将代码库变成私有;当然,也可以自己购买一个服务器。
有了环境配置之后,我们就能够进行Git与GitHub的相关操作的,但是,先等等,我们得先了解一个东西 —— SSH Key
SSH key:由于github的代码是开源的,每个人都可以查看代码,但是只有自己能够修改代码,那么github如何识别出提交是用户本人推送的呢?SSH Key就如同一把“钥匙”,只有这把钥匙才能够针对相应的代码进行操作。
机器本地Git仓库和GitHub仓库之间的传输,是通过SSH进行加密的,因此需要设置SSH Key。
准备性的知识我们学完了,接下来我们来了解一下如何进行配置和操作。
在用户Git仓库的主目录下,查看有没有.ssh目录,查看.ssh目录下有没有id_rsa和id_rsa.pub文件,如果有,可直接跳到下一步。
如果没有,打开Git Bash,创建SSH Key
输入如下命令(注意:邮件地址需要换成你自己的)然后“回车”
$ ssh-keygen -t rsa -C "email@XXX.com"
可以在用户主目录(我的是在C盘的User[用户]当中)里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人
2.1 打开“Settings”
2.2 选择“SSH and GPG Keys”
2.3 点击“New SSH Key”
2.4 填上相应的Title,在Key文本框里粘贴id_rsa.pub文件的内容
2.5 点“Add Key”,你就应该看到已经添加的Key
GitHub允许添加多个Key。假定有若干电脑,只要把每台电脑的Key添加到GitHub,就可以在每台电脑上向GitHub上推送了
登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库
在Repository name填入“工程的名称(最好是使用英文)”,再填写上Description,其他保持默认设置,点击“Create repository”按钮,就成功地创建了一个新的Git仓库
根据GitHub的提示,在本地仓库下运行命令
git remote add origin git@github.com:iceswan/h5coursetesting.git(此处的iceswan/h5coursetesting.git为具体你的GitHub的链接地址)
git push -u origin master
代码解释:远程库的名字就是origin,这是Git默认的叫法。在GitHub当中添加仓库之后就可以把本地库的所有内容推送到远程库上了。
-u参数,通常在第一次推送master分支时使用。Git除了会把“本地的master内容推送到服务端的master分支”之外,还会把本地的master分支和服务端的master分支关联起来,从而让我们在以后的推送或者拉取时简化命令。
推送成功后,可以立刻在GitHub页面中看到远程库的内容已经和本地一模一样:
如果不是第一次推送的话,可以使用如下命令来推送最新修改
$ git push origin master
当然也有可能不进行推送,而是先从Git上克隆文件
$ git clone git@github.com:iceswan/h5coursetesting.git(此处的iceswan/h5coursetesting.git为具体你的GitHub的链接地址)
当第一次使用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)?
SSH连接在第一次验证GitHub服务器的Key时,需要用户确认GitHub的Key的指纹信息是否真的来自GitHub的服务器,输入yes回车即可。
如果担心有人冒充GitHub服务器,输入yes前可以对照GitHub的 Key的指纹信息是否与SSH连接给出的指纹信息一致。
讲完整体之后,说一些额外的,在之前HTML5学堂的第一篇文章当中,我们提过SVN和Git的区别,当前我们再拿出来看一下,就会发现,应该能够更清楚的理解这两者对网络的依赖了~另外,关于如何从GitHub当中删除文件,也书写了一个小demo
SVN在没有联网的时候是拒绝干活的
Git在本地工作完全不需要考虑远程库的存在,没有联网也可以正常工作,当有网络的时候,再把本地提交推送到服务器都就完成了同步
$ git rm 文件名
$ git commit –m 注释
$ git push origin master
HTML5小编-利利~10hours
欢迎沟通交流~HTML5学堂