Git 和 GitHub 那点事

作者: sunnyaxin | 来源:发表于2016-12-07 16:21 被阅读53次

    GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub。作为开源代码库以及版本控制系统,GitHub拥有超过900万开发者用户。随着越来越多的应用程序转移到云上,GitHub已经成为了管理软件开发以及发现现有代码的首选方法。

    Git 是分布式版本控制系统,同一个 Git 仓库可以分布到不同的机器上,最开始肯定只有一台机器有一个原始版本库,此后,别的机器可以克隆这个原始版本库,而且每台机器的版本库都是一样的,并没有主次之分。

    流程大概也就是这样:


    经过前面Git基本操作浅析Git思想和工作原理的介绍,我们知道Git分工作区和暂存区,而真正发挥Git强大作用不可缺少的一环就是远程仓库(Remote),只要注册账号,就可以从GitHub这个神奇的网站免费获得Git远程仓库。

    真正实现分布式的远端仓库

    那么如何将 Git 和 GitHub 联系起来呢?这就需要将GitHub设置为Git的远端仓库了,具体步骤如下:

    1、注册GitHub账号

    进入GitHub官网,注册并登录账号

    2、安装并配置Git

    见博客Git基本操作,完成Git的安装和配置

    3、创建SSH Key

    本地Git仓库和GitHub仓库之间的传输是通过SSH加密的,通过这种方式,能够在不输入密码的情况下,将GitHub作为自己的远程服务器,进行版本控制。(不配置的话每次提交都要输入用户名密码)

    第一步,查看SSH密钥是否存在,若有直接跳到下一步登录GitHub

    cd ~/.ssh
    

    第二步,生成密钥,过程中直接按回车,使用默认值即可

    ssh-keygen -t rsa -C "<email_address>"
    
    生成SSH Key

    若配置成功,可以在用户主目录中找到.ssh目录,里面有id_rsaid_rsa.pub两个文件,这两个就是SSH Key的密钥,其中id_rsa是私钥,不能泄漏出去,id_rsa.put是公钥,可以告诉其他人。

    4、在Github中添加公钥

    登录GitHub ---->Settings ----> SSH and GPG keys ----> New SSH key
    ----> 输入Title ----> 复制公钥 ----> Add SSH key

    GitHub 添加公钥

    GitHub需要SSH Key识别推送的提交确实是本人推送的,而不是别人冒充,而Git支持SSH协议。而且,GitHub允许添加多个Key,假如你有若干电脑,只要把每台电脑的Key都添加到GitHub上,就可以在每台电脑上往GitHub推送了。

    5、创建远端仓库

    New repository ---> 输入Repository name ---> Create respository
    此时就成功创建了一个远端仓库,此时这个仓库是空的

    创建远端仓库成功
    6、绑定本地到远端仓库
    git remote add origin <http_address>
    或者
    git remote add origin <ssh_address>
    

    GitHub给出的地址不止一个,实际上,Git支持多种协议,默认的 git:// 使用 ssh,但也可以使用 https 等其他协议,但通过ssh支持的原生git协议速度最快。

    此外,添加后,远程库的名字就是 origin,这是Git默认叫法,也可以改成别的。

    注:如果不小心绑定了错的远端仓库,再想绑定对的会提示

    fatal: remote origin already exists.
    

    此时应该删除错误绑定的远端仓库,执行以下语句即可

    git remote rm origin
    
    7、推送改动
    git push origin <branch_name> 
    

    把本地库的内容推送到远程,实际上是把当前分支推送到远程。

    推送改动

    由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。关于截图中出现的ssh警告,可以在这里查看更详细的介绍。

    从现在起,只要本地作了提交,就可以通过命令:

    git push origin master
    

    把本地master分支的最新修改送至GitHub,现在,我们拥有了真正的分布式版本库。

    8、克隆远端仓库
    git clone <repository_address>
    
    Git 克隆远端仓库
    9、拉取远程代码到本地
    git pull <远程主机名> <远程分支名>:<本地分知名>
    

    比如,取回origin主机的next分支,与本地的master分支合并,需要写成下面这样

    git pull origin next:master
    

    相当于在自己的工作空间中获取(fetch)并合并(merge)远端的改动。

    GitHub 参与开源项目

    在GitHub上,利用Git极其强大的克隆和分支功能,广大程序员可以真正自由参与各种开源项目。这里以一个非常强大的CSS框架bootstrap项目为例,展示如何参与开源项目,步骤如下:

    GitHub参与开源项目
    1. 访问项目主页
    2. 点“Fork”在自己账号下克隆了一个bookstrap仓库
    3. 从自己账号下 git clone到本地

    一定要从自己的账号下clone仓库,这样你才能推送修改。如果从bootstrap的作者的仓库地址git@github.com:twbs/bootstrap.git克隆,因为没有权限,你将不能推送修改。

    GitHub实现协同工作的 pull request

    上面已经讲到如何参与开源项目了,下载到本地进行修改后,要想真正更正该仓库中的错误,就需要用到pull request,整个的流程如下:

    1. 先 fork 别人的仓库,相当于拷贝一份(不会有人直接让你改修原仓库的)
    2. clone 到本地分支,做一些 bug fix
    3. 发起 pull request 给原仓库,让他看到你修改的 bug
    4. 原仓库 review 这个 bug,如果是正确的话,就会 merge 到他自己的项目中

    GitHub 实现协同工作的 issue

    GitHub 提供 GitHub Issue,这是一种非常有效的途径,帮助我们在任何特定项目创建记录化,交互化以及自动化的bug或者功能对话。不过Issue可以被禁用,默认状态下是被禁用,Issue中内置大量值得称道的功能,但最重要的功能之一在与其与pull request 的整合,用户只需在提交消息中加入issue的数字ID,即可轻松在所提交中罗列该issue作为参考,例如:

    git commit -am "Adding a info; fix #3"
    

    这条消息在关联pull request 被接受后自动标记为3号issue。

    参考资料

    Git 教程
    如何在GitHub上协作开发开源项目
    廖雪峰的git在线教程
    充分了解 Git 并入手单人开发

    相关文章

      网友评论

      本文标题:Git 和 GitHub 那点事

      本文链接:https://www.haomeiwen.com/subject/lybdmttx.html