Git 的特点—— Git 学习笔记 02

2024-09-09 05:38
文章标签 特点 学习 02 笔记 git

本文主要是介绍Git 的特点—— Git 学习笔记 02,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • Git 简史
  • Git 的特点
    • 直接记录快照,而非差异比较
    • 近乎所有操作都是本地执行
    • 保证完整性
    • 一般只添加数据
  • 参考资料

Git 简史

众所周知,Linux 内核开源项目有着为数众多的参与者。这么多人在世界各地为 Linux 编写代码,那Linux 的代码是如何管理的呢?事实是在 2002 年以前,世界各地的开发者把源代码通过 diff 的方式发给 Linus,然后由 Linus 本人手工合并。

你也许会问,难道那时候就没有版本控制系统吗?有是有,比如 CVS、SVN. 虽然它们免费且开源,可是用起来速度太慢,且必须联网才能使用。也有一些商用的版本控制系统,虽然比 CVS、SVN 好用,可是要收费,这和 Linux 的开源精神不符。

到了 2002 年,Linux 内核已经发展了十年有余。代码库之庞大很难再让 Linus 继续通过手工方式来管理了。于是 Linus 选择了一个商业版本控制系统 BitKeeper(由 BitMover 公司开发,属于分布式版本控制系统)。出于人道主义精神,BitMover 公司授权 Linux 社区免费使用 BitKeeper.

2005 年,BitMover 公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区
免费使用 BitKeeper 的权力。这可怎么办呢?自己动手,丰衣足食。Linus 决定自行开发版本控制系统。仅用十天的时间,他就编写出了 git 的第一个版本(大神就是大神啊)。一个月以后,Linux 内核的源码已经由 git 管理了!

Git 的特点

直接记录快照,而非差异比较

git 和其它版本控制系统(包括 Subversion 和近似工具)的主要差别在于 git 对待数据的方法。其它系统(比如 CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。如下图所示:
在这里插入图片描述

但是 git 不按照以上方式对待或保存数据。 反之,git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,git 都会对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,git 不再重新存储该文件,而是用一个链接指向之前存储的文件。

git 对待数据更像是一个 快照流
(下图中虚线表示之前存储过,所以不重复存储。)
这里写图片描述

近乎所有操作都是本地执行

在 git 中的绝大多数操作都只需要访问本地文件和资源。比起所有操作都有网络延时开销的集中式版本控制系统,Git 在这方面会让你感到“迅雷不及掩耳盗铃儿响叮当”。 因为你在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。

这也意味着在断网环境下,几乎可以进行任何操作。 比如你在飞机上对代码做了一些修改,你能愉快地提交,直到有网络连接时再上传。 换做用 Subversion 或 CVS,你只能修改文件,但不能向数据库提交修改(因为你没网)。

保证完整性

git 中所有数据在存储前都计算校验和,然后以校验和来引用。 这意味着不可能在 git 不知情的情况下更改任何文件目录。若你在传送过程中丢失信息或损坏文件,Git 就能发现。

git 用以计算校验和的机制叫做 SHA-1 散列。 这是一个由 40 个十六进制字符组成的字符串,基于 git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样的:

24b9da6552252987aa493b52f8696cd6d3b00373

git 中使用这种哈希值的情况很多。实际上,git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名,也不是 Subversion 那样连续的版本号。

一般只添加数据

你执行的 git 操作,几乎只往 git 数据库中增加数据。 很难让 git 执行任何不可逆操作,或者让它以任何方式清除数据。 同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容;但是一旦你提交快照到 git 中,就难以再丢失数据。如果你还定期把数据推送到其他仓库,那么你的数据就更难弄丢了。


参考资料

[1] https://git-scm.com/book/zh/v2/起步-Git-基础
[2] https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000

这篇关于Git 的特点—— Git 学习笔记 02的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1150311

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

便携式气象仪器的主要特点

TH-BQX9】便携式气象仪器,也称为便携式气象仪或便携式自动气象站,是一款高度集成、低功耗、可快速安装、便于野外监测使用的高精度自动气象观测设备。以下是关于便携式气象仪器的详细介绍:   主要特点   高精度与多功能:便携式气象仪器能够采集多种气象参数,包括但不限于风速、风向、温度、湿度、气压等,部分高级型号还能监测雨量和辐射等。数据采集与存储:配备微电脑气象数据采集仪,具有实时时钟、数据存

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识