GIT 版本控制

Posted yang-sen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GIT 版本控制相关的知识,希望对你有一定的参考价值。

简述版本控制

版本控制是一种记录一个或若干个文件内容变化,以便将来查阅特定版本修订情况的系统。

本地版本控制

大部分人都习惯将整个项目目录复制下来的方式来保存不同的版本,可能也会加上备份时间来做以区别。这样做唯一的好处就是简单,但是这样的后果就是特别容易犯错。还可能会混淆所在的工作目录,一不小心写错文件或者覆盖文件。

为了解决这种问题就有了各种版本控制系统的出世。在最开始大多是采用一些简单的数据库来记录文件的历次的更新差异。

但是这种版本控制只能在本地进行操作,不可以让不同操作系统的开发者一起协同开发,所以集中化的版本控制应运而生。

集中化的版本控制系统

这类系统,有CVS、Subversion、Perforce。这些都是使用一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连接到这台服务器,取出最新的文件或者进行提交更新。

好处:每个人都可以在一定程度上看到项目中的其他人正在做些什么。 而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。

缺点:如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。 如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。 本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。

分布式版本控制系统

因为集中化的版本控制系统的风险,分布式版本控制系统面世了。这类系统中,如Git、Mercurial、Bazaar 以及 Darcs 等,客户端并只提取最新版本的文件快照,而是将代码仓库完整的镜像下来。这样一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次克隆操作,都是一次对代码仓库的完整备份。

更进一步,许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

git简介

git是目前世界上最先进的分布式版本控制系统。

本地操作  

在git中的巨大多数操作都只需要访问本地文件和资源,一般不需要来自其他计算机的信息。因为在本地磁盘中就有项目的完整历史,所以大部分操作看起来都是瞬间完成的。当我们想要浏览项目的历史,git不需要连接到服务去获取历史数据,他只需要直接从本地数据库当中读取,就可以立即看到项目历史。这也意味着我们在离线状态几乎可以进行一切操作。当我们在没有网络的地方工作是,也可以进行提交,直到有网络连接的时候再上传,使用其他的版本控制系统就不会这么方便了。

数据完整性

  git中所有的数据在存储之前都计算校验和,然后以校验和来引用。这就意味着不可能在git不知道的时候更改任何文件或者目录内容。这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。 若你在传送过程中丢失信息或损坏文件,Git 就能发现。

三种状态

Git 有三种状态,你的文件可能处于其中之一:

1、已提交(committed)已提交表示数据已经安全的保存在本地数据库中。

2、已修改(modified)已修改表示修改了文件,但还没保存到数据库中。

3、已暂存(staged)  已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。

由此引入git项目的三个工作区域的概念:git仓库工作目录暂存区域

  • git仓库:Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。 这是 Git 中最重要的部分,从其它计算机克隆仓库时,拷贝的就是这里的数据。
  • 工作目录:工作目录是对项目的某个版本独立提取出来的内容。 这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
  • 暂存区域:暂存区域是一个文件,保存了下次将提交的文件列表信息,一般在 Git 仓库目录中。 有时候也被称作`‘索引’‘,不过一般说法还是叫暂存区域。

基本的 Git 工作流程如下:

  1. 在工作目录中修改文件。

  2. 暂存文件,将文件的快照放入暂存区域。

  3. 提交更新,找到暂存区域的文件,将快照永久性存储到 Git 仓库目录。

技术分享图片

 

如果 Git 目录中保存着的特定版本文件,就属于已提交状态。 如果作了修改并已放入暂存区域,就属于已暂存状态。 如果自上次取出后,作了修改但还没有放到暂存区域,就是已修改状态

命令集关系

技术分享图片

安装

官网下载:https://git-scm.com/downloads

Linux安装:

  $ sudo yum install git

Windows上安装

在 Windows 上安装 Git 也有几种安装方法。 官方版本可以在 Git 官方网站下载。 打开 http://git-scm.com/download/win,下载会自动开始。 要注意这是一个名为 Git for Windows的项目(也叫做 msysGit),和 Git 是分别独立的项目;更多信息请访问 http://msysgit.github.io/

另一个简单的方法是安装 GitHub for Windows。 该安装程序包含图形化和命令行版本的 Git。 它也能支持 Powershell,提供了稳定的凭证缓存和健全的 CRLF 设置。 稍后我们会对这方面有更多了解,现在只要一句话就够了,这些都是你所需要的。 你可以在 GitHub for Windows 网站下载,网址为 http://windows.github.com

从源代码安装

有人觉得从源码安装 Git 更实用,因为你能得到最新的版本。 二进制安装程序倾向于有一些滞后,当然近几年 Git 已经成熟,这个差异不再显著。

如果你想从源码安装 Git,需要安装 Git 依赖的库:curl、zlib、openssl、expat,还有libiconv。 如果你的系统上有 yum (如 Fedora)或者 apt-get(如基于 Debian 的系统),可以使用以下命令之一来安装最小化的依赖包来编译和安装 Git 的二进制版:

  $ sudo yum install curl-devel expat-devel gettext-devel     openssl-devel zlib-devel
  $ sudo apt-get install libcurl4-gnutls-dev libexpat1-dev gettext     libz-dev libssl-dev

为了能够添加更多格式的文档(如 doc, html, info),你需要安装以下的依赖包:

 $ sudo yum install asciidoc xmlto docbook2x
 $ sudo apt-get install asciidoc xmlto docbook2x

当你安装好所有的必要依赖,你可以继续从几个地方来取得最新发布版本的 tar 包。 你可以从 Kernel.org 网站获取,网址为 https://www.kernel.org/pub/software/scm/git,或从 GitHub 网站上的镜像来获得,网址为 https://github.com/git/git/releases。 通常在 GitHub 上的是最新版本,但 kernel.org 上包含有文件下载签名,如果你想验证下载正确性的话会用到。

接着,编译并安装:

  $ tar -zxf git-2.0.0.tar.gz
  $ cd git-2.0.0
  $ make configure
  $ ./configure --prefix=/usr
  $ make all doc info
  $ sudo make install install-doc install-html install-info

完成后,你可以使用 Git 来获取 Git 的升级:

  $ git clone git://git.kernel.org/pub/scm/git/git.git

 GIT基本使用流程(GitHub)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

以上是关于GIT 版本控制的主要内容,如果未能解决你的问题,请参考以下文章

源代码管理工具GitHub介绍

GitHub介绍

GitHub介绍

学习使用Git 版本控制 代码管理

Git 第一章 Git概述 -- Git概述(版本控制版本控制工具Git历史工作机制Git和代码托管中心)

版本控制器git