Git学习笔记1---基础

1、最初的本地版本控制系统

最初人们习惯用复制整个项目用编号处理来保存不同的版本信息,但是这么做有很大的弊端,很容易混淆并且容易出错覆盖掉重要的文件,为了解决这些问题,人们开发了许多本地版本控制系统,大多是采用某种简单的数据库来记录文件的历史更新差异。其中比较流行的RSC,它的工作原理是在硬盘上保存补丁集,意思是文件修订前后的变化,通过查看补丁,可以重新计算出各个版本的文件内容。

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

之后由与要解决人们在不同开发系统上协作开发问题,出现了集中化的版本控制系统 (Centralized Version Control Systems,简称 CVCS);这类系统如CVS、Subversion等都是有一个单一的集中管理的服务器,会保存所有的文件的修订版本,而协同工作的人们都能通过自己的客户端连接这台服务器,读取或者提交最新的文件更新。

相对老式的本地控制系统,好处是每个协同人员在一定程度上知道项目的整体更新进度,知道其他人做了什么,并且利于管理员集中管理;但是缺点是:中央服务器可能出现的单点故障,只要服务器出现宕机,所有的客户端都无法提交更新,必须等待服务器重新开始。如果中心数据库所在的磁盘发生损坏,又没有做恰当的备份,则会丢失所有的数据,包括项目的整个变更历史。

3、分布式版本控制系统

之后又出现了分布式版本控制系统 (Distributed Version Control System,简称 DVCS),这类系统如Git等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整的镜像保存下来。这样任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像恢复本地仓库。实际上每次更新都是一次对代码仓库的完整备份。

相对集中式的版本控制系统,分布式的版本控制系统相当于每一个客户端都可以保存一个副本映像,没有中央服务器统一管理,则任意一个客户端出现问题丢失数据可以直接重其他的客户端拷贝恢复数据即可。

4、Git的历史

主要是Linux创始人为了便于管理和维护庞大的Linux内核而开发的分布式版本管理系统;

系统的特性:

(1)速度

(2)简单的设计

(3)对非线性开发模式的强力支持,允许成千上万个并行开发的分支

(4)完全分布式

(5)有能力高效管理类似Linux内核一样的超大规模的项目

5、Git基础

Git与其他版本控制系统最大的区别在于Git对待数据的方法。概念上来区分,其他大部分系统以文件变更列表的方式存储信息。这类系统如CVS等,它们是将保存的信息看作是一组基本的文件和每个文件随时间逐步积累的差异;

                        

图1:为一般的存储流,即每次存储每个版本的差异,并不是存储每个更新版本的全部信息,只是保存版本之间的差异信息;

图2:为Git的快照流存储方式,Git更像把数据看作是对小型文件系统的一组快照;每次提交更新,或在Git中保存项目状态时,它主要是对但是的全部文件制作一个快照保存这个快照的索引。为了高效,如果文件没有修改,Git不再重新存储该文件,而是只保留一个链接指向之前存储的文件。

6、Git的优点

(1)近乎所有操作都是在本地执行

a、Git中绝大多数操作都只需要访问本地文件和资源,由于是本地操作,所以操作速度非常快,不需要联网操作,联网只是在需要更新项目文件的时候,即你可以在断网的情况继续完成项目等有网络时候上传更新即可;

b、本地会保存所有的历史版本,查看非常方便,不需要由远程服务器处理或从远程服务器拉回旧版本文件再来本地处理;

(2)Git保证数据的完整性

Git中所有的数据存储前都会计算文件校验和,利用的SHA-1散列,hash函数,来确定对比文件是否已经被修改或者损坏;

(3)Git一般只执行添加数据操作

Git在执行时几乎只往Git数据库中增加数据,很难让Git执行任何不可逆操作,或者让它以任何方式清楚数据。同别的VCS一样,未提交更新时可能丢失或者弄乱修改的内容,但是一旦你提交快照到Git中,就难以再丢失数据;

7、Git的三种状态

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

(2)已修改(modified):已修改表示修改了文件,但是还没有保存在数据哭中;

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

时间: 2024-10-05 15:27:30

Git学习笔记1---基础的相关文章

Git 学习笔记

Git 学习笔记 本文整理参考廖雪峰的 Git 教程, 整理 Git 学习笔记, 用于 Git 常用命令速查:常用命令用彩色标注! Git学习笔记 $ git config --global user.name "Your Name" 配置本机所有仓库的用户名 $ git config --global user.email "[email protected]" 配置本机所有仓库的Email地址 $ git init 初始化一个Git仓库 $ ls -ah 查看隐

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类

Java快速教程--vamei 学习笔记(基础篇)

链接:http://www.cnblogs.com/vamei/archive/2013/03/31/2991531.html java快速教程第1课 从HelloWorld到面向对象 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/14/2958654.html java快速教程第2课 方法与数据成员 学习网址:http://www.cnblogs.com/vamei/archive/2013/03/25/2964430.html java快

Git学习笔记(二)

本次学习的是 版本回退 基本命令: 查看提交历史      git log 版本回退            git reset 查看每一次的命令 git reflog 具体步骤: 添加一句话到readme.txt中,并提交到Git库中. . readme.txt在Git中目前有三个版本: 按提交时间先后顺序排列如下: 第一个:wrote a readme.txt 第二个:add distrubuted 第三个:add difficulties 如果版本过多的话,根本记不住,只能查看使用命令git

Git 学习笔记<简介与安装> (一)

Git,开源中国以及GitHub所使用的系统, Is A 一个分布式版本控制系统 Be Used to 为团队合作写代码提供方便的管理系统.几乎满足你所有关于合作写代码的幻想. Has 本地端:工作区.版本库 (版本库还含有一个暂存区) 远程仓库:版本库(用来储存版本库的服务器) How To Install Linux: 首先,先输入git,看看是否安装Git: $ gitThe program 'git' is currently not installed. You can install

Git学习笔记总结和注意事项

一.Git简介 Git是目前世界上最先进的分布式版本控制系统,其特点简单来说就是:高端大气上档次! 二.Windows上Git安装 最早Git是在Linux上开发的,很长一段时间内,Git也只能在Linux和Unix系统上跑.不过,慢慢地有人把它移植到了Windows上.现在,Git可以在Linux.Unix.Mac和Windows这几大平台上正常运行了. msysgit是Windows版的Git,从http://msysgit.github.io/下载,然后按默认选项安装即可.安装完成后,在开

C#学习笔记(基础知识回顾)之值类型与引用类型转换(装箱和拆箱)

一:值类型和引用类型的含义参考前一篇文章 C#学习笔记(基础知识回顾)之值类型和引用类型 1.1,C#数据类型分为在栈上分配内存的值类型和在托管堆上分配内存的引用类型.如果int只不过是栈上的一个4字节的值,该如何在它上面调用方法? 二:值类型转换为引用类型--装箱 2.1CLR对值类型进行装箱时:新分配托管堆内存,将值类型的实例字段拷贝到新分配的内存中,返回托管堆中新分配对象的地址.这个地址就是一个指向对象的引用. int i = 10; Object obj = i; 三:将引用类型转换为值

Git 学习笔记<远程仓库与标签管理> (四)

什么是远程仓库? 就像第一章介绍的那样,远程仓库可以储存你编写的所有源码和资源文件. 甚至也可以当网盘使,不过当然有很多契合git管理文本的特性. 下面就要以 github 为示例远程仓库进行介绍.  (也可以自己弄一台服务器作远程仓库). 创建仓库 在主页找到 +New repository 或者右上角的加号里有.输入名字 描述 然后没钱只能public就能确定了.然后呢,点名字打开你的仓库.(主页右下角可以找到) 关于与远程仓库的连接 首先你打开你的保险箱得先证明身份吧,不然我怎么知道你是客

[Golong]学习笔记(一) 基础知识

Go编程基础 Go的内置关键字(25个) 不多 break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type continute for import return var Go的注释方法(和js一样) 单行注释: // 多行注释: /**/ Go程序一般结构 common_structure.go 通过 pack

01-Python学习笔记-基础语法

Python标识符 -d           在解析时显示调试信息 -O           生成优化代码 ( .pyo 文件 ) -S           启动时不引入查找Python路径的位置 -v            输出Python版本号 -X           从 1.6版本之后基于内建的异常(仅仅用于字符串)已过时. -c cmd     执行 Python 脚本,并将运行结果作为 cmd 字符串. file           在给定的python文件执行python脚本. P