GIT | 关于GIT如何实现分布式版本控制系统

1 何为分布式版本控制?它与传统的版本控制有什么不同?

1.1什么是版本控制

在百度百科上这样解释版本控制:对软件开发过程中各种程序代码、配置文件以及说明文档等文件变更的管理,是软件配置管理的核心思想之一。通过这句话可以知晓版本控制的核心是管理变更。

1.2 为什么要有版本控制?

系统软件因为迭代而需要版本控制。
迭代是因为客观需求的变更而产生,对于团队维护的系统迭代,需要对变更记录做保存并管理,便于日后出现BUG快速查询修改内容和修改日期。
版本控制本身是一个工具或者系统,发展今天大体有两类:分布式版本控制系统(Distributed Version Control System, DVCS)和集中式版本控制系统(Centralized Version Control System, CVCS)。
集中式版本控制系统的特点在于:所有的文件资源(代码、配置文件和说明文档)都集中放置在中央服务器上,本地可以通过网络与中央服务器相连copy文件资源,然后进行本地的修改,修改完成通过网络提交到中央服务器上。整个流程高度依赖网络,因此当网络断开则所有的工作都会受到影响。
分布式版本控制系统则很好的解决这个问题。它的特点在于:每个人在本地都会有自己的版本库,而不是连接到服务器上的一个公共的版本库,这样所有的修改记录都提交并存储在本地版本库中,而无需连接服务器上的版本库。当有网络时可以多个版本库同时提交,并附带提交修改记录,这样对于谁在什么时间修改了哪些内容都一模了然。

这里可以发现,集中式和分布式的最大区别在于:集中式下的各个程序员都需要跟中央服务器上的公共版本库打交道,而分布式下的程序员都有各自的本地版本库,无需跟公共版本库打交道。

2 GIT作为分布式版本控制系统的代表,有哪些突出的功能?

  • 分布式体系结构:可完全断网工作,不受网络连接的限制;
  • 简易的分支与合并操作;
  • 可与Subversion进行交互;

3 GIT是如何体现分布式版本控制?

3.1 版本库与工作空间并存。

GIT的版本库不在服务器上,而存储在本地工作目录树的“.git”目录中。这可以帮助程序员尽可能少的与服务器通信,而只需要与本地版本库打交道。
那么如何创建本地版本库以及如何创建目录树呢?

3.2 提交和推送(commit and push)

本地代码修改完成后,需要提交到本地版本库;除了修改的内容,版本库还会记录改动的日志信息,即留言。记录日志信息的目的在于将来能够方便的查询为何改动以及何时改动。然后通过推送把本地版本库的内容PUSH到公共版本库,便于其他程序员可以看到修改的内容和日志。
本地版本库如何同步远程版本库呢?
第一步:把远程版本库中的改动Fetch到本地版本库中;第二步:在本地版本库中,把从远程版本库里取来的改动与自己本地的改动Merge一下。
可以思考下本地版本库是如何与远程版本库通信的呢?

3.3 通过代码行和字符组织版本库中的内容

GIT之所以能够精确的记录修改的内容,在于它是记录和跟踪组成代码文件的各部分内容,也就是以字符或者代码行为记录单位。而其他版本控制系统都是以文件为单位存储的。这样做的目的在于:①它能够显著降低版本库存储全部既是版本所需的磁盘空间;②它是的类修改操作变得快捷容易。

3.4 使用标签跟踪里程碑

标签是以一个简单的名称来标记版本库历史中某个特点的点;它可以是为了纪念而标记的一个里程碑,也可以是一次普通的缺陷修复而标记的一个时间点。标签的含义大概是为了标识版本库中一个难度难记的内部版本号,便于程序员跟踪历史版本。

3.4 分支的使用

分支个概念比较重要,是分布式与集中式的显著区别,后续会着重说明。

你可能感兴趣的:(GIT基础知识)