文档章节

Git简介

明舞
 明舞
发布于 2015/04/27 10:43
字数 789
阅读 14
收藏 0
点赞 0
评论 0
 

Git简介

 

一、本地版本控制系统

很久以前人们就开始考虑版本控制的问题,因为简单的通过复制整个项目目录的方式来保存不同的版本虽然操作简单,但是缺点显而易见。为解决此类问题,人们开发出本地版本控制系统,大多是采用简单的数据库方式来记录文件的历史更新差异,如图:


 

二、集中化的版本控制系统

很快人们遇到一个新的问题,即如何让不同系统下的开发者协同工作?于是,集中化的版本控制系统( Centralized Version Control Systems,简称CVCS )应运而生,诸如CVS、SVN等,它们的共同点是都有一个单一的管理服务器,保存整个项目的文件历史,而协同工作的开发者通过客户端连接到服务器,取出最新的文件或者提交自己的更新。

 

这么做最显而易见的缺点是中央服务器的单点故障。若是宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。


 

三、分布式版本控制系统

分布式版本控制系统( Distributed Version Control System,简称DVCS )。在这类系统中,诸如Git,Mercurial,Bazaar 还有Darcs 等,客户端并不只提取最新版本的文件快照,而是把原始的代码仓库完整地镜像下来。这么一来,任何一处协同工作的历史用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的提取操作,实际上都是一次对代码仓库的完整备份。


 

四、文件差异版本控制

CVS、SVN等系统进行版本控制的原理为每次都记录有哪些文件作了更新,其控制原理如图所示:


 

五、直接快照版本控制

Git并不保存这些前后变化的差异数据。实际上,Git更像是把变化的文件作快照后,记录在一个微型的文件系统中。每次提交更新时,它会纵览一遍所有文件的指纹信息并对文件作一快照,然后保存一个指向这次快照的索引。为提高性能,若文件没有变化,Git不会再次保存,而只对上次保存的快照作一连接。


 

六、四个状态和三个区域

Git内部只有三个状态,分别是未修改unmodified、修改modified、暂存staged。对于没有加入Git控制的文件,可以视为第四种状态未跟踪untracked。

       Git文件流转有三个区域,分别是工作区域、索引区域、本地数据区域。工作树中的文件添加到git版本控制索引中,则git开始对文件进行跟踪监控。索引区域也可以理解为数据暂存区域,当提交操作时,暂存区域的数据被记录到本地数据仓库中。

本文转载自:http://blog.csdn.net/pandakong/article/details/7214258

共有 人打赏支持
明舞
粉丝 227
博文 424
码字总数 516555
作品 0
程序员
2016 年度码云热门项目排行榜 TOP 50

2016 年度码云热门项目排行榜 TOP 50 是通过开源项目2016年在码云上的 Watch、Star、Fork 数量来评定的榜单。码云平台发展至今,涌现了越来越多优秀的开源项目,越来越多的开源作者在上面分享...

oschina
2017/01/12
23.6K
53
码云周一见 | 老司机教你如何麻溜地搭建网站

类型:网站开发 Hello,大家好,小一又和大家见面了,今天小一想要跟大家聊聊网站开发的那些事儿。从近期业内动向来看,不少网站搭建团队开始向着高端网站建设、品牌网站建设、响应式网站建设...

达尔文
2016/12/26
7.3K
12
2017.11.28-学习笔记:简单的git命令

版本控制系统(version control system) git 分布式版本控制系统 1.git的三个区 1.工作区:我们书写代码的地方,工作的目录就叫做工作区 2.暂存区:使用 add 命令,在 .git 目录中的一个索引文...

演员小新
2017/11/28
0
0
史上最简单的 GitHub 教程

温馨提示:本系列博文已经同步到 GitHub,如有需要的话,欢迎大家到「github-tutorial」进行和操作! 1 简介   GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的...

qq_35246620
2017/03/27
0
0
2015 年度新增开源软件排名 TOP 100

本榜单包含 2015 年开源中国新收录的 5977 款开源软件中,根据软件本身的关注度、活跃程度进行排名前 100 名的软件。从这份榜单中或许可以了解到最新业界的趋势。 1、SwitchyOmega 项目简介:...

oschina
2016/01/12
56.8K
48
git简介

什么是“版本控制”? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 版本控制系统(VCS): 可以将某个文件回溯到之前的状态,甚至将整个项目都回退到过...

garkey
01/11
1
0
Git版本管理的简介与安装[一]

标签(linux): git 笔者Q:972581034 交流群:605799367。有任何疑问可与笔者或加群交流 git简介 很多人都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的...

陈天刚
2017/08/16
0
0
Git使用详解

1.1 关于版本控制 1.2 Git 简史 1.3 Git 基础 1.4 命令行 1.5 安装 Git 1.6 初次运行 Git 前的配置 1.7 获取帮助 1.8 总结 2.1 Git 基础 - 获取 Git 仓库 2.2 Git 基础 - 记录每次更新到仓库...

Bony
2016/05/17
20
0
2015 年 Git@OSC 最热门开源项目 Top 50

自 Git@OSC 上线以来受到广大开源作者的喜爱。值此新年之际,开源中国整理出 Git@OSC 最热门开源项目 Top50,对Git@OSC 的发展至今所取得的成绩进行总结。此榜单主要通过开源项目的 Watch、S...

oschina
2016/01/06
21K
104
Ubuntu15.04+Jekyll+Github Pages搭建静态博客

Ubuntu15.04+Jekyll+Github Pages搭建静态博客 1. Jekyll简介 简单: 无需数据库、无需评论功能,不需要不断更新版本,只需要关心博客内容。 静态: 只用 Markdown (或 Textile)、Liquid、HTM...

我家有宝
2016/01/28
71
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

idea tomcat 远程调试

tomcat 配置 编辑文件${tomcat_home}/bin/catalina.sh,在文件开头添加如下代码。    CATALINA_OPTS="-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=7829" Idea端配......

qwfys
今天
1
0
遍历目录下的文件每250M打包一个文件

#!/usr/bin/env python # -*- utf-8 -*- # @Time : 2018/7/20 0020 下午 10:16 # @Author : 陈元 # @Email : abcmeabc@163.com # @file : tarFile.py import os import tarfile import thr......

寻爱的小草
今天
1
0
expect同步文件&expect指定host和要同步的文件&构建文件分发系统&批量远程执行命令

20.31 expect脚本同步文件 expect通过与rsync结合,可以在一台机器上把文件自动同步到多台机器上 编写脚本 [root@linux-5 ~]# cd /usr/local/sbin[root@linux-5 sbin]# vim 4.expect#!/...

影夜Linux
今天
1
0
SpringBoot | 第九章:Mybatis-plus的集成和使用

前言 本章节开始介绍数据访问方面的相关知识点。对于后端开发者而言,和数据库打交道是每天都在进行的,所以一个好用的ORM框架是很有必要的。目前,绝大部分公司都选择MyBatis框架作为底层数...

oKong
今天
12
0
win10 上安装解压版mysql

1.效果 2. 下载MySQL 压缩版 下载地址: https://downloads.mysql.com/archives/community/ 3. 配置 3.1 将下载的文件解压到合适的位置 我最终将myql文件 放在:D:\develop\mysql 最终放的位...

Lucky_Me
今天
2
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

问题终结者
今天
1
0
expect脚本同步文件expect脚本指定host和要同步的文件 构建文件分发系统批量远程执行命令

expect脚本同步文件 在一台机器上把文件同步到多台机器上 自动同步文件 vim 4.expect [root@yong-01 sbin]# vim 4.expect#!/usr/bin/expectset passwd "20655739"spawn rsync -av ro...

lyy549745
今天
1
0
36.rsync下 日志 screen

10.32/10.33 rsync通过服务同步 10.34 linux系统日志 10.35 screen工具 10.32/10.33 rsync通过服务同步: rsync还可以通过服务的方式同步。那需要开启一个服务,他的架构是cs架构,客户端服务...

王鑫linux
今天
1
0
matplotlib 保存图片时的参数

简单绘图 import matplotlib.pyplot as pltplt.plot(range(10)) 保存为csv格式,放大后依然很清晰 plt.savefig('t1.svg') 普通保存放大后会有点模糊文件大小20多k plt.savefig('t5.p...

阿豪boy
今天
3
0
java 8 复合Lambda 表达式

comparator 比较器复合 //排序Comparator.comparing(Apple::getWeight);List<Apple> list = Stream.of(new Apple(1, "a"), new Apple(2, "b"), new Apple(3, "c")) .collect(......

Canaan_
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部