Git 工作的原理(上)

855 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情

作为开发人员,我们都使用某种形式的版本控制系统,其中最流行的就是 Git。

我们很多人都使用 Git,但很少有人知道它在后台是如何工作的。我们大多只是将它与 GUI 客户端或内置在我们的 IDE 和代码编辑器中的客户端一起使用。我们中的一些人(包括我自己)甚至不知道如何使用终端进行导航。

这可能对您的项目有害,因为如果不完全了解 Git 在后端的工作方式,您可能会遇到无法解决的问题。

在本文中,我将分享一些 Git 如何在幕后工作以及使用它时应该知道的内容。

什么是 Git 它是如何工作的?

Git 是一个分布式版本控制系统,可帮助开发人员跟踪项目中的更改。将其视为项目从开始到结束的整个时间线。

当您创建一个新项目并使用 初始化 Git 存储库git init时,它会创建一个名为的隐藏文件夹.git,其中包含一堆其他文件和文件夹。这些文件和文件夹包含 Git 引用该特定目录所需的所有内容。

屏幕截图 2021-10-25-at-10.45.26-AM

.git 文件夹

初始化存储库后,Git 开始跟踪该目录中的所有文件和文件夹,但您明确告诉它不要在文件中跟踪的文件和文件夹除外.gitignore。该.gitignore文件是隐藏文件,可让您列出您不希望 Git 跟踪的所有文件和文件夹。Git 永远不会在您的项目中引用这些文件和文件夹。

屏幕截图 2021-12-24-at-11.24.05-AM

.gitignore 文件

屏幕截图 2021-12-24-at-11.30.06-AM

在 .gitignore 文件中

当您使用 git 时,您的文件会保存在 Git 的 3 种状态之一:

  • 修改状态——这是您在文件中添加、删除或更改某些内容的时候。Git 已注意到更改,但您之前尚未通知 Git 更改。
  • 分阶段状态——这是您通知 Git 更改并告诉 Git 记录该更改的时间。俗称“暂存区”,这个阶段的文件称为暂存文件。您甚至可以在暂存文件之后对其进行修改,这样您就可以同时查看处于修改状态和暂存状态的文件。暂存后所做的修改不会在提交后出现。
  • 提交状态——这是 Git 保存您修改的更改的时间。

您可以使用该命令git status查看您的文件当前处于哪些状态。 屏幕截图 2021-12-24-at-11.32.24-AM

当您提交一些代码时,Git 会为您的代码的特定版本拍摄快照,您可以在稍后阶段引用它。

所以你可以说 Git 是一个项目引用的数据库。该数据库是使用三种类型的对象构建的:

  • 包含每个提交的元数据的提交,例如消息和作者,
  • 包含对文件名、文件内容和有时其他树的引用的更改树,
  • 以及代表文件中保存的实际数据的 blob。

屏幕截图 2021-10-25-at-10.48.27-AM

.git 文件夹内的内容

注意:在某些情况下 .git 文件夹在 macOS 中是隐藏的,因此您必须在系统设置中启用隐藏文件才能看到它。