共计 1200 个字符,预计需要花费 3 分钟才能阅读完成。
git 介绍
简单来说 git 就是一个分布式的版本控制软件,直接记录快照,而非差异比较 Git 和其它版本控制系统 (包括 Subversion 和近似工具) 的主要差别在于 Git 对待数据的方法。从概念上来说,其它大部分系统以文件变更列表的方式存储信息(基于差异的版本控制)。Git 不按照以上方式对待或保存数据。反之,Git 更像是把数据看作是对小型文件系统的一系列快照。在 Git 中,每当你提交更新或保存项目状态时,它基本上就会对当时的全部文件创建一个快照并保存这个快照的索引。为了效率,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。Git 对待数据更像是一个快照流。
git 的优势
近乎所有操作都是本地执行
在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。因为你在本地磁盘上就有项目的完整历史,所以大部分操作看起来瞬间完成。这也意味着你在离线或者没有 VPN 时,几乎可以进行任何操作,直到有网络连接时再上传。
保证完整性
Git 中所有的数据在存储前都计算校验和,然后以校验和来引用。这意味着不可能在 Git 不知情时更改任何文件 内容或目录内容。这个功能建构在 Git 底层,是构成 Git 哲学不可或缺的部分。若你在传送过程中丢失信息或损 坏文件,Git 就能发现。
很难丢失数据
你执行的 Git 操作,几乎只往 Git 数据库中添加数据。你很难让 Git 执行任何不可逆操作,或者让它以任何方式清除数据。虽然未提交更新时有可能丢失或弄乱修改的内容。但是一旦你提交快照到 Git 中,就难以再丢失数据,特别是如果你定期的推送数据库到其它仓库的话。
git 的三种状态
-
已修改(modified) 表示修改了文件,但还没保存到数据库中。
-
已暂存(staged) 表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
-
已提交(committed) 表示数据已经安全地保存在本地数据库中。
由于有这三种状态,所以 Git 项目拥有三个阶段: 工作区、暂存区以及 Git 目录。
- 工作区:是对项目的某个版本独立提取出来的内容。这些从 Git 仓库的压缩数据库中提取出来的文件,放在磁盘上供你使用或修改。
- 暂存区:是一个文件,保存了下次将要提交的文件列表信息,一般在 Git 仓库目录中。按照 Git 的术语叫做“索引”,不过一般说法还是叫“暂存区”。
- Git 仓库目录:是 Git 用来保存项目的元数据和对象数据库的地方。这是 Git 中最重要的部分,从其它计算机克隆仓库时,复制的就是这里的数据。
基本的 Git 工作流程如下:
1. 在工作区中修改文件。2. 将你想要下次提交的更改选择性地暂存,这样只会将更改的部分添加到暂存区。3. 提交更新,找到暂存区的文件,将快照永久性存储到 Git 目录。
如果 Git 目录中保存着特定版本的文件,就属于已提交状态。
如果文件已修改并放入暂存区,就属于已暂存状态。
如果作了修改但还没有放到暂存区域,就是已修改状态。