Git实战之Zulip-Git的实现方法

Git为何与众不同

无论您是Git的新手,还是拥有其他版本控制系统(VCS)的经验,最好先了解一下Git的工作原理。我们推荐这个出色的演示文稿来自Nelson Elhage和Anders Kaseorg的*Understanding Git以及来自Scott Chacon和Ben Straub的Pro Git*的Git Basics章节。

以下是最重要的事情:

**Git工作基于快照:与其他版本控制系统(例如,Subversion,Perforce,Bazaar)不同,它跟踪文件以及随时间推移对这些文件所做的更改,Git会跟踪项目的快照。每次提交或以其他方式对存储库进行更改时,Git都会获取项目的快照并存储对该快照的引用。如果文件没有改变,Git会创建一个指向相同文件的链接,而不是再次存储它。

大多数Git操作都是本地的:Git是一个分布式版本控制系统,因此一旦克隆了存储库,就可以获得该存储库的完整历史记录以及完整副本。暂存,提交,分支和浏览历史记录是您无需网络访问即可在本地执行的所有操作,并且不会立即影响任何远程存储库。如果要推送更改或接收远程仓库的更改,你需要, , 或 。

几乎所有Git操作都会向Git数据库添加信息,而不是将其删除。因此,很难让Git执行您无法撤消的操作。但是,Git无法撤消它不知道的内容,因此经常提交更改并经常将提交推送到远程存储库是一种很好的做法。

**Git专为轻量级分支和合并而设计。**分支只是对快照的引用。没关系,预计会有很多分支,甚至是一次性的和实验性的分支。

Git将所有数据存储为对象,其中有四种类型:blob (文件)、tree (目录)、commit (修订)和tag。这些对象中的每一个都由唯一的哈希命名,SHA-1有它的内容。大多数情况下,您通过哈希的前几位或更易读的引用(当前分支)来引用对象。Blob和tree代表文件和目录。Tag是其他对象的引用。一个commit对象包括:tree id、一个或多个父项作为commit ID、作者(name, email, date)、提交者(name, email, date)和一个日志信息。Git存储库是这些对象的可变指针的集合,称为refs。

克隆存储库会创建工作副本。每个工作副本都有一个 子目录,其中包含自己的Git存储库。该 子目录还跟踪索引,保存更改的暂存区将成为下一次提交的一部分。目录外面的所有文件都是工作目录。

**使用Git跟踪的文件可能有三种状态:已提交,已修改和已暂存。**已提交的文件是安全存储在本地存储库/数据库中的文件。已暂存的文件是已更改,并已标记为包含在下一个提交中;他们是索引的一部分。已修改的文件已更改,但尚未标记为包含在下一次提交中; 它们尚未添加到索引中。

Git提交工作流程如下:在工作目录中编辑文件。使用添加到索引(即暂存区)中。使用提交到当前分支的HEAD。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181218G0L1N300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券