通过之前的学习,我们已经成功注册了github的账号,可以开始学习如何使用github了。
一.传输协议
在创建版本库之前,我觉得有必要了解一下Git支持的传输协议,Github主要使用HTTP协议和SSH协议。因为主要学习github的使用,所以以下使用方式都是以访问github的远程版本库为例。
Git传输协议
Git支持四种传输协议来传输资料:本地协议,HTTP协议,SSH协议和Git协议,这四种协议各有利弊。
本地协议
将库放在本地磁盘上,其他人通过磁盘共享来实现文件的提交和下载,权限有磁盘权限控制。形式如下:
git clone /opt/git/project.git或git clone file:///opt/git/project.git
这两种写法,前者如果你只给出路径,Git会尝试使用硬链接或直接赋值它所需要的文件,如果像后者使用了file://,Git会调用它平时通过网络来传输数据的工序,这种效率相对较低。使用file://前缀的主要原因是当你需要一个不包含无关引用或对象的干净仓库副本的时候,一般情况使用前者的形式。
HTTP协议
如果要推送到需要授权的服务器上,服务器会提醒你输入用户名和密码,传输效率差,依赖你的网速。形式如下:
git clone https://github.com/YuanTianxin/TestGithub.git
使用http协议克隆远程仓库到本地,然后在本地仓库修改提交后向远程仓库push,需要输入github的用户名和密码
Git协议
Git协议的实现方式是在服务器上启动一个Git的守护进程,用于监听9418端口,大型企业级防火墙通常会封锁这个端口,缺少授权机制,并且是最难架设的协议。Git协议是现存最快的传输协议。如果你在提供一个有很大访问量的公共项目,或者一个不需要对读操作进行授权的庞大项目,使用Git协议是不错的。形式如下:
git://github.com/YuanTianxin/TestGithub.git
SSH协议以及在github中添加SSH Keys
最常见的,使用最多的协议。SSH也是唯一一个同时支持读写操作的网络协议。HTTP和Git通常都是只读的。SSH架设相对比较简单,通过SSH协议访问是安全的,所有数据传输都是加密和授权的。但是,SSH协议是不能够实现匿名访问的。形式如下:
ssh://git@github.com/YuanTianxin/TestGithub.git
如果前面不加ssh://即不指明某个协议,会默认使用SSH协议。
github为托管的Git版本库提供SSH协议支持,即用户可以用公钥认证的方式连接到github的SSH服务器。如果我们没有在github账户中正确设置公钥认证,会出现 Permission denied (publickey)。
第一步:使用ssh-keygen生成公钥和私钥
命令ssh-keygen -t rsa -C 邮箱账号,其中-t rsa代表使用RSA加密算法进行加密,RSA是应用最多的公钥加密算法,它是非对称加密算法,相信学过信息安全类课程的对它应该都不陌生(本人大二时选修过密码学,表示都还给老师了)。-C 邮箱账号,指定邮箱账号非常重要,当你拥有多个github账号的时候,因为虽然一个github账号允许使用多个不同的SSH公钥,但反过来,一个SSH公钥只能对应一个github账号。输入命令回车后,在第二行会让你输入要生成的文件名,这里可以看到文件保存在用户home下的.ssh目录下。在.ssh目录下的id_rsa文件保存的是私钥,私钥文件要严加保护,不能泄露出去,至于公钥文件id_rsa.pub则可以公开。因为私钥文件不能泄露,所以在第三行会让你输入口令来保护私钥文件,第四行需要你确认口令。
第二步:登录github,打开设置页面,进入SSH Keys添加页面,把公钥文件id_rsa.pub中的内容复制粘贴在Key的输入框中,并在Title中给这个Key起个名字,点击Add SSH Key按钮提交
现在可以使用ssh -T git@github.com验证一下,以上设置是否成功,因为你之前设置了私钥的保护口令所以现在需要输入口令。然后提示信息中会出现你的用户名信息。
二.在github中创建自己的新版本库
1.如果本地没有git初始化好的项目,我们需要在github上从头创建一个版本库,可以先在本地克隆,建立提交数据,最后再push到github上去。
在github上建立一个空的版本库
点击create repository即创建了一个空的版本库。
从上图中可以看到,我们可以选择HTTPS协议,也可以选择SSH协议,两个协议对应不同的访问地址,所有github用户都可以使用这个URL访问此公开版本库,但是只有建立者才具有读写权限,其他人只有读的权限。
在本地克隆创建的远程空版本库,出现一个警告,告诉你这是克隆的是一个空版本库。
创建一个README.md文件和test.txt文件,写入内容之后提交。
最后推送到github的那个空的版本库中,其中origin是默认的在github上远程版本库的名字。
回到github上看看
已经成功push到了github上的版本库中去。
2.如果在github项目初始化之前,数据已经存在于本地版本库中,也就是说你本地有一个项目,想用git管理它,并且推送到github上去。
首先,还是跟上面一样在github创建一个远程版本库。
然后进入项目里面,使用git init初始化,创建一个README.md文件,然后把项目中所有文件加入暂存区,提交。
为本地版本库添加名为origin的远程版本库,这个远程版本库就是我们一开始创建的。最后执行push命令,完成github远程版本库的初始化,注意命令行的-u参数,在推送成功后自动建立本地分支与远程版本库分支的追踪
查看github上的远程版本库
删除版本库
在版本库的主页面上,倒数第二个选项有个Settings
点击Settings后进入设置页面,往下翻,在最后一块有个Danger Zone,危险地带表示在这里面的操作有不可逆性,你一定要小心!
点击Delete this repository,弹出一个对话框,告诉你删除这个版本库是不可以撤销的以及删除它会带来的一系列影响,最后让你输入版本库的名字进行确认。
点击底下的红字按钮即可完成删除
三.浏览他人的项目
登录进来一开始就是最重要的仪表板页面,当我们想查看一些别人托管项目,只需要点击Explore GitHub即可。左上角的黑色小猫是返回仪表板页面的快捷键。