Github作为远程仓库的使用详解

远程仓库,即可理解为把本地仓库丢到了某个服务器上,然后别人把你的仓库clone(克隆)或者说拷贝下来而已!又或者说是多人协作时,各个人本地仓库更改整合的一个媒介而已!

我们可以自己创建远程仓库,搞台服务器,然后自己搭建,也可以将项目托管到代码托管网站,比如Github,GitCafe,Git@OSC,GitLab,coding.net等。介绍下面几款远程仓库:

  • Github:是最大的代码托管网站,大部分的开发者都喜欢使用这个,但是开源项
    目不收费,而私有项目是要交”保护费”的,而且Github服务器毕竟在国外,国内访
    问可能会有些缓慢!
  • GitCafe:同样私有仓库收保护费,开源仓库免费,但是相比起github有点坑,而且是不时会挂掉,不是很推荐…
  • Git@OSC:开源中国社区的,仓库免费,不过协作功能还没有完全体现。
  • GitLab:开源的版本管理系统,可以安装Gitlab CE源码,自己搭服务器;也可以使用GitLab EE企业版,GitLab可以配合着其他IM工作使用,比如我司用的瀑布IM,当有人推送更新的时候收到推送信息等!
  • coding.net:国内体验最接近Github的产品,有免费版和开发版,高级版,内容可自行到官网查看。
    1.Github账号注册与创建新仓库
    注册Github账号:
    注册链接:https://github.com/join
    创建新仓库:Create repository创建一个仓库
    2.把本地仓库推送到新仓库
    git init将你所创建的项目变成带有git仓库的项目,then指定远程主机:https://github.com/hmqqk/hmqqk.github.io.git 用git remote查看状态然后将本地仓库push到远程仓库github中(-u参数作为第一次提交使用,作用是把本地master分支和远程master分支关联起来(设置默认远程主机),后续提交不需要这个参数!)。
    liuhong@liuhong-PC MINGW64 ~/hmqqk (master)
    $ git remote add origin https://github.com/hmqqk/hmqqk.github.io.git

    liuhong@liuhong-PC MINGW64 ~/hmqqk (master)
    $ git remote
    origin

    liuhong@liuhong-PC MINGW64 ~/hmqqk (master)
    $ git remote -v
    origin https://github.com/hmqqk/hmqqk.github.io.git (fetch)
    origin https://github.com/hmqqk/hmqqk.github.io.git (push)
    则即可看到Github上有我们push的文件。
    3.为项目添加SSH Key免去提交输入账号密码的麻烦第一点:使用Https url可以任意克隆Github上的项目;而是用SSH url克隆的话,你必须是项目的拥有者或管理员,而且还要添加SSH Key,否则会无法克隆。还有一点是,Https每次push都需要输入用户名和密码,而使用SSH则不需要输入用户名如果配置SSH Key时设置了密码,则需要输入密码,否则直接git push就可以了!另外,SSH,Secure shell(安全外壳协议),专为远程登陆会话与其他网络服务提供安全性的协议, 而SSH传输的数据是可以经过压缩的,可以加快传输的速度,出于安全性与速度,我们优先考虑使用SSH协议,而SSH的安全验证规则又分为基于密码和基于密钥两种!我们这里用的是基于第二种的,即在本地创建一对密钥,公钥(id_rsa.pub)和私钥(id_rsa),然后把公钥的内容贴到Github账号的ssh keys中,这样就建立了本地和远程的认证关系,当我们再push到远程仓库,会将你本地的公共密钥与服务器的进行匹配,如果一致验证通过直接推送更新!
    目录:C:\Users\liuhong.ssh(有.ssh目录则无需创建,否则手动创建该目录) 在此目录下打开Git Bash
    ssh-keygen -t rsa -C “2442501113@qq.com” 一直回车会生成秘钥SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。将id_rsa.pub添加到github中的ssh keys中去
    输入之后,可能会看到一下提示:
    The authenticity of host ‘[ssh.github.com]:443([192.30.252.150]:443)’ can’t be established.
    RSA key fingerprint is 16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48.
    Are you sure you want to continue connecting (yes/no)?
    不用担心确保fingerprint是对的,然后根据提示输入命令:yes即可.而且,ssh目录下还会多出一个文件:known_hosts
    为什么GitHub需要SSH Key呢?因为GitHub需要识别出你推送的提交确实是你推送的,而不是别人冒充的,而Git支持SSH协议,所以,GitHub只要知道了你的公钥,就可以确认只有你自己才能推送。当然,GitHub允许你添加多个Key。假定你有若干电脑,你一会儿在公司提交,一会儿在家里提交,只要把每台电脑的Key都添加到GitHub,就可以在每台电脑上往GitHub推送了。
    最后友情提示,在GitHub上免费托管的Git仓库,任何人都可以看到(但只有你自己才能改)。所以,不要把敏感信息放进去。
    如果你不想让别人看到Git库,有两个办法,一个是交点保护费,让GitHub把公开的仓库变成私有的,这样别人就看不见了(不可读更不可写)。另一个办法是自己动手,搭一个Git服务器,因为是你自己的Git服务器,所以别人也是看不见的。这个方法我们后面会讲到,相当简单,公司内部开发必备。
    4.添加远程库
    我们已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作。
    5.将本地库的内容push到远程库中
    具体内容见Git本地仓库详解部分的介绍
    6.从远程库克隆到本地
    先在本地新建一个空的文件夹作为工作目录,我新建的目录是:D:workspace。因为接下来要将远程的文件克隆到这个目录下。
    然后跳到D:workspace目录下,使用git clone命令开始克隆:
    git clone git@github.com:hmqqk/hmqqk.github.io.git
    则回到本地D:workspace目录下即可查看克隆好的文件。

很惭愧<br><br>只做了一点微小的工作<br>谢谢大家