git 是什么?
Git 诞生于 2005 年,是一款免费、开源、分布式版本控制系统。
直接记录快照,而非差异比较
Git 和其它版本控制系统的主要差别在于 Git 对待数据的方式。
其它大部分系统以文件变更列表的方式存储信息,这类系统(CVS、Subversion等)将它们存储的信息看作是一组基本文件和每个文件随时间逐步累积的差异
(基于差异的版本控制)。
Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一系列快照。
在 Git中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率,如果文件没有修改,Git
不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是一个快照流。
这是 Git 与几乎所有其它版本控制系统的重要区别。
近乎所有操作都是本地执行
在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。
如果你习惯于所有操作都有网络延时开销的集中式版本控制系统,Git 在这方面会让你感到速度之神赐给了 Git
超凡的能量。因为你在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。
Git 保证完整性
Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。
Git 用以计算校验和的机制叫做 SHA-1 散列(hash,哈希)。这是一个由 40 个十六进制字符(0-9 和 a-f)组成的字符串,基于 Git
中文件的内容或目录结构计算出来。SHA-1 哈希看起来是这样:
24b9da6552252987aa493b52f8696cd6d3b00373
Git 中使用这种哈希值的情况很多,你将经常看到这种哈希值。实际上,Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。
Git 一般只添加数据
你执行的 Git 操作,几乎只往 Git 数据库中添加数据。你很难使用 Git 从数据库中删除数据,也就是说 Git
几乎不会执行任何可能导致文件不可恢复的操作。
同别的 VCS 一样,未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中,
就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。
三种状态
Git 有三种状态,你的文件可能处于其中之一:已提交(committed)、已修改(modified) 和 已暂存(staged)
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
这会让我们的 Git 项目拥有三个阶段:工作区、暂存区以及 Git 目录。
工作区是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
暂存区是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。按照 Git
的术语叫做“索引”,不过一般说法还是叫“暂存区”。
Git 仓库目录是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git
中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
基本的 Git 工作流程如下:
在工作区中修改文件。
将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。
提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
-
控制系统
+关注
关注
41文章
6537浏览量
110443 -
数据
+关注
关注
8文章
6867浏览量
88799 -
Git
+关注
关注
0文章
196浏览量
15734
发布评论请先 登录
相关推荐
评论