Git学习第二课 基础知识

一、简史
Git 是因为Linux 内核开源社区与分布式版本控制系统的BitKeeper的合作结束,人家不给用了,怎么办呢?自己开发一套呗,Git就诞生了。

二、基础

Git与(SVN,CVS, Perforce)有什么区别?
都是版本控制系统,我自己用过SVN和Git,最大的区别就是Git可以在家里不用连VPN就能够提交版本。而SVN就必须连网才可以。那么造成这种差异的原因呢?
因为两种系统的实现方式不一样。以SVN为例,SVN是记录每个文件的哪些内容变化,进行版本控制的。而Git则是比较整个文件的变化。这么说有点儿抽象,看图吧。

SVN等系统的记录版本的方式。


image.png

每次记录有哪些文件作了更新,以及都更新了哪些行的什么内容。

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


image.png

Git几乎所有的操作都可以在本地完成
与svn总是从服务器更新数据相比,Git可以在本地完成很多的操作。因为 Git 在本地磁盘上就保存着所有当前项目的历史更新,所以处理起来速度飞快。用 CVCS 的话,没有网络或者断开 VPN 你就无法做任何事情。但用 Git 的话,就算你在飞机或者火车上,都可以非常愉快地频繁提交更新,等到了有网络的时候再上传到远程仓库。
时刻保持数据完整性
Git 使用 SHA-1 算法计算数据的校验和,通过对文件的内容或目录的结构计算出一个 SHA-1 哈希值,作为指纹字符串。该字串由 40 个十六进制字符(0-9 及 a-f)组成,看起来就像是:

24b9da6552252987aa493b52f8696cd6d3b00373

Git 的工作完全依赖于这类指纹字串,所以你会经常看到这样的哈希值。实际上,所有保存在 Git 数据库中的东西都是用此哈希值来作索引的,而不是靠文件名。

文件的三种状态

重点!重点!重点!

对于任何一个文件,在 Git 内都只有三种状态:
已提交(committed),
已修改(modified)
已暂存(staged)。
已提交表示该文件已经被安全地保存在本地数据库中了;
已修改表示修改了某个文件,但还没有提交保存;
已暂存表示把已修改的文件放在下次提交时要保存的清单中。

基本的 Git 工作流程如下:

在工作目录中修改某些文件。
对修改后的文件进行快照,然后保存到暂存区域。
提交更新,将保存在暂存区域的文件快照永久转储到 Git 目录中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Git是目前最流行的版本管理系统,也是最先进的分布式版本控制系统(distributed version cont...
    pro648阅读 5,922评论 1 17
  • 单元格行、列坐标位置称之为单元格引用。在公式中可以通过引用来代替单元格中的实际数值。在公式中不但可以引用本工作簿中...
    a5f5d9501912阅读 624评论 0 1

友情链接更多精彩内容