Git 学习(一)简介及安装

Git 简介及安装

 

  Git是目前世界上最先进的分布式版本控制系统(没有之一)。它的诞生也颇具传奇,Linux创始人Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!有兴趣的话,可查看 Git的诞生

 

  什么是版本控制?

    版本控制(Revision control)是一种软体工程技巧,籍以在开发的过程中,确保由不同人所编辑的同一档案都得到更新。

    版本控制系统/软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。

    常用的版本控制系统/软件有 VSS、CVS、SVN 以及 Git 等。简介详见 百度百科

 

  什么是分布式?

    分布式版本控制 (DVCS) 是一种不需要中心服务器的管理文件版本的方法,但是它也可以使用中心服务器。更改可以被合并到 DVCS 的任何其他用户的系统中,因此可以实现非常灵活的工作流。

    DVCS 的两个主要优点是:它比集中的版本控制更灵活,因为它除了支持传统的(集中式)工作流,还支持其他各种工作流;它比集中式服务器快得多,因为大多数操作在客户机本地进行,而不需要网络操作。

    

  为什么选择 Git ?

    实际上,相对于 CVS、SVN 等主流版本控制软件,Git 的学习成本会更高。SVN等的图形操作界面,对于用惯 Windows 系统的用户来说,使用和理解上都比较易学。而对于 Git 用户,需要理解更多更复杂的概念,包括文件、快照、工作树、索引、本地资源库、远程资源库、远程、提交、分支和 Stash 等。那相比于 CVS 与 SVN,Git 的优势到底体现在哪里?

    第一,Git 底层自行维护的存储文件系统

      CVS、SVN 底层采用的为增量式文件系统,如图 1 。增量式文件系统的特点是:当文件变动发生提交时,该文件系统存储的是文件的差异信息。

      图 1. CVS、SVN 记录文件内容差异   图 1. CVS、SVN 记录文件内容差异

 

      同样是文件变更提交,Git 底层文件系统存储的则为文件快照,即整个文件内容,并保存指向快照的索引,如图 2 所示。考虑到性能因素,如果文件内容没有发生任何变化,该文件系统则不会重复保存文件,只是简单地保存文件的链接。

      图 2. Git 记录整个文件快照   图 2. Git 记录整个文件快照

 

      Git 之所以选择这样的底层存储数据结构,主要是为了提高 Git 分支的使用效率。实际上,Git 分支本质上是一个指向索引对象的可变指针,而每一个索引对象又指向文件快照,如图 3 所示。

        图 3. Git 分支对应的数据结构

      图 3. Git 分支对应的数据结构

      这样一来,创建分支可以瞬间完成,几乎不需要花费太多代价。换句话说,Git 分支是廉价的、轻量级的。我们看看各种 CVS、SVN 项目,分支通常意味着源代码的完整拷贝,其代价是昂贵的、重量级的。而对于大型项目来说,创建各种分支又是十分必要的,这与 Git 鼓励频繁创建与合并分支的理念相吻合。

 

    第二,Git 版本控制系统的设计思想是"去中心化"

      传统的 CVS 、SVN 等工具采用的是 C/S 架构,只有一个中心代码仓库,位于服务器端。而一旦由于服务器系统宕机、网络不通等各种原因造成中心仓库不可用,整个 CVS 、SVN 系统的代码检入与检出就瘫痪了。即便考虑到高可用性,通过迁移另一个中心仓库继续代码提交操作,相应的运营维护成本也会随之上升。

      为了摆脱对中心仓库的依赖,Git 的初始设计目标之一就是分布式控制管理。我们给出一个样例,如图 4 所示。假如我们成立一个项目组,开发者主要由 Alice、Bob、Clair、David 四名成员组成。其中,除了中心仓库 origin(Git 默认远程仓库名称)之外,每一名成员各自负责一个本地仓库。从分布式的观点来看,David 可看成是 Alice 的远程仓库,反过来也是一样。Git 分布式的设计理念有助于减少对中心仓库的依赖,从而有效降低中心仓库的负载,改善代码提交的灵活性。

        图 4. Git 分布式工作示意图   图 4. Git 分布式工作示意图

      Git 分布式设计思想所带来的另外一大好处是支持离线工作。离线工作的好处不言而喻,对于 CVS、SVN 这种严重依赖网络的 C/S 工具而言,没有了网络或者 VPN ,就意味着失去了左膀右臂,代码检入与检出操作就无法正常进行。而一旦使用 Git ,即便在没有 WIFI 的飞机或者火车上,照样可以频繁地提交代码,只不过先提交到本地仓库,等到了网络连通的时候,再上传到远程的镜像仓库。

      有关 Git 更多详细信息,请参考 Git 官方网站:http://git-scm.com/‎

 

  安装Git

    廖雪峰的这篇博文已经很好地说明了如何 安装Git,请根据不同的系统安装Git。

    P.S   安装验证,Linux 下 输入 git;Windows cmd 下 git

 

  Git Bash

      git bash 是Windows下的命令行工具

 

    Git Bash 窗口如下, git help 可以很方便的查阅帮助文档,是以 html 文档形式来呈现的。

    

    

 


 

    Windows系统下,有不少方便的工具,以下两个可选择性安装,但建议还是直接使用 Git Bash 命令行操作。

    TortoiseGit

      Window 的用户,对于习惯 Tortoise 风格的用户,可以选择 TortoiseGit 安装包,安装后的右键截图如图 8 所示。TortoiseGit 的下载地址为:http://code.google.com/p/tortoisegit/ 或者  http://download.tortoisegit.org/

        图 8. 从 Windows 上安装“右键”Git 工具——TortoiseGit    从 Windows 上安装“右键”Git 工具——TortoiseGit

 

    Eclipse 插件——EGit

      使用的 Eclipse 开发者,可以选择 Eclipse 插件——EGit。官方地址为:http://wiki.eclipse.org/EGit

EGit目前还是一个处于孵化期间的项目,因此EGit 0.7.1并没,同 时也无法保证没有bug(当然EGit 0.7.1是经过严格的测试之后才发布的正式版本),但对于笔者这样的用户来说能满足基本的功能并且可以方便的享受Eclipse整合git功能即可。同 时作者表示在Eclipse下一个发行版Eclipse Helios到来之际将发布EGit 0.8,届时EGit的功能将更加强大,同时提供更多的新特性支持。

      在线安装:Eclipse - help -Install new software ...   Add  http://download.eclipse.org/egit/updates-3.6.2/

          OK 后如下

        勾选并 Next,安装完成后,应会提示重启 Eclipse   

 

      安装完成后,需要配置,对应使用博主还没操作过,可参考:http://www.cnblogs.com/draem0507/archive/2013/01/14/2859954.html

 

 

 

posted @ 2015-04-28 14:01  feesland  阅读(1427)  评论(0编辑  收藏  举报