Git(一):Git与版本控制简介

Intro
版本控制系统是什么
     版本控制系统(Version Control System,VCS)能够帮助咱们记录和跟踪项目中各文件内容的修改变化。它能够帮咱们保存项目的各个版本,以及修改缘由,咱们能够借用此工具回到项目曾经的某个状态。除此以外,版本控制系统也是帮助人员进行协做开发的利器。
Git是什么
     Git是一个分布式版本控制系统(Distributed Version Control System,DVCS)。与传统的集中式版本控制系统(如CVS、Subversion和ClearCase)相比,Git具备如下优点:
分布式体系结构:能够彻底断网工做,不受网络链接的限制
分支与合并操做很容易:建立分支简单、经济、快速,Git只会保存与主干的差别,这与其余版本控制系统不同。Git把分支上全部修改合并回父分支,即便屡次,也只是一眨眼的功夫
跟Subversion进行交互:Git能够从SubVersion的版本库中导入全部的历史,并把你在Git中的改动发送回Subversion的版本库 git

版本库
     版本库(Repository)是版本控制系统用来存储全部历史数据的地方。大多数版本控制系统在版本库中存储各个文件的当前状态、历史修改时间、谁作的修改、以及修改的缘由、还有修改的内容。
     常见的版本控制系统能够分为两种类型。一种是集中式版本库(Centralized Repository),全部的程序员都会把他们的改动提交到服务器上的一个公共版本库。具体来讲,每个程序员在本地有一个工做目录树,其内容是该版本库中最新的代码。当他们在工做目录树中完成代码的修改后,就把改动提交回该版本库中。这种方式有必定局限性,在本地工做目录树中,只能看到代码的最新版本。若是想查询历史修改记录,就必须与服务器上的版本库打交道,就必需要使用网络。若是没有网络,也没法记录当前已修改后的项目版本。
     另外一种就是分布式版本库(Distributed Repository)。使用分布式版本控制系统,在本地就有本身的版本库,全部的历史记录都会记录在本地的版本库中,提交代码的时候不用链接到远程版本库,而是记录在本地的版本库中。git就是这样的一种版本控制系统。那么git是怎样将本地的修改上传到项目的主版本库中的呢?有两种方式:1. 经过push操做直接把修改上传到主版本库。2.生成包含少许修改的补丁包,把补丁包提交给项目维护人员,再由他更新主版本库。 程序员

工做目录树
     工做目录树是版本库的一个"断面视图"。它包括了开发该项目所须要的所有文件,包括源代码文件、构建文件、单元测试文件等。
     在Git中,版本库不在服务器上,而存储在本地工做目录树中的".git"目录中。工做目录树是怎么建立出来的呢?有两种方法。1. 用Git相关的命令初始化版本库,也就是生成".git"目录,因而".git"目录的父目录就成了工做目录树。2. 克隆(Clone)一个已有的版本库,也就连带建立了相应的工做目录树。
     克隆一个已有的版本库,就是建立该版本库的一个拷贝,并把版本库中主分支(Master Branch)的内容检出(check out)到工做目录树。在Git中,检出是指把工做目录树更新,并使其内容与版本库中某个特定的历史版本相同。 服务器

代码修改与文件同步
     代码在修改以后,须要提交(commit)这些改动。每次提交操做都使得版本库中新增一个版本(Revision)。除了记录改动内容自己外,版本库还记录改动的日志信息(log message)或称提交留言(commit message),这是代码的变更缘由。
     咱们在开发的过程当中,有时须要将本地的改动共享。为此,须要把变更推入(push)上游版本库(upstream repository)。上游版本库是一个公共版本库。
     与push相反,咱们也应该可以把公共版本库中内容取到本地版本库中来。须要两步操做。第一步,把改动取来(Fetch),把远程版本库中的版本和分支复制到本地版本库中。第二步,在本地版本库中,把从远程版本库里取来的改动与本身本地的改动合并(Merge)。通常来讲,取来操做和合并操做老是前后执行的。所以,在Git中能够用一个命令完成这两步操做:拖入(Pull)。
    
标签
     标签以一个简单的名称(即标签名)来标记版本库历史中某个特定的点。它能够是一个重要的里程碑,好比对外正式发布的版本;也能够是相对普通的时间点,好比在修复一个缺陷后打个标签。
     本质上,标签是一个对于使用者来讲易于理解易于记忆的名字,用来标识版本库中一个难读难记的内部版本号,以此帮助使用者跟踪版本历史。 网络

分支
     使用分支(branche)可使你的项目有多条路径能够前进。下图展现了分支原理。主分支(Master Branch)是研发的主线,一些版本控制工具也把主分支称做主干(trunk)。 分布式


     分支很是自由,分支后面能够合并到主分支上,也能够选择不合并。甚至,你也能够把分支当作是另外一个主干,别人能够从你的分支上再拉取一个分支。 工具

合并
     合并操做会把两条及两条以上的分支合并到一块儿。Git会比较各分支上的变化,肯定变化在哪里发生、哪一个文件的哪一个位置,当不一样的变化发生在文件的不一样部分时,Git可以自动合并。但当发生在同一位置时,就会提示冲突,等待人工介入。而合并的全部操做会被Git所记录下来,便于之后能回归(revert)或者查看。 单元测试

总结
     在本章中,介绍了Git中最核心的几个概念:版本库、版本、分支、合并。版本库是项目的相关内容的容器,而版本是项目在每一个时刻下的视图。分支、合并则为团队之间的协做提供支持。 测试

相关文章
相关标签/搜索