持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第9天,点击查看活动详情
作为开发人员,我们都使用某种形式的版本控制系统,其中最流行的就是 Git。
我们很多人都使用 Git,但很少有人知道它在后台是如何工作的。我们大多只是将它与 GUI 客户端或内置在我们的 IDE 和代码编辑器中的客户端一起使用。我们中的一些人(包括我自己)甚至不知道如何使用终端进行导航。
这可能对您的项目有害,因为如果不完全了解 Git 在后端的工作方式,您可能会遇到无法解决的问题。
在本文中,我将分享一些 Git 如何在幕后工作以及使用它时应该知道的内容。
什么是 Git 它是如何工作的?
Git 是一个分布式版本控制系统,可帮助开发人员跟踪项目中的更改。将其视为项目从开始到结束的整个时间线。
当您创建一个新项目并使用 初始化 Git 存储库git init时,它会创建一个名为的隐藏文件夹.git,其中包含一堆其他文件和文件夹。这些文件和文件夹包含 Git 引用该特定目录所需的所有内容。
.git 文件夹
初始化存储库后,Git 开始跟踪该目录中的所有文件和文件夹,但您明确告诉它不要在文件中跟踪的文件和文件夹除外.gitignore。该.gitignore文件是隐藏文件,可让您列出您不希望 Git 跟踪的所有文件和文件夹。Git 永远不会在您的项目中引用这些文件和文件夹。
.gitignore 文件
在 .gitignore 文件中
当您使用 git 时,您的文件会保存在 Git 的 3 种状态之一:
- 修改状态——这是您在文件中添加、删除或更改某些内容的时候。Git 已注意到更改,但您之前尚未通知 Git 更改。
- 分阶段状态——这是您通知 Git 更改并告诉 Git 记录该更改的时间。俗称“暂存区”,这个阶段的文件称为暂存文件。您甚至可以在暂存文件之后对其进行修改,这样您就可以同时查看处于修改状态和暂存状态的文件。暂存后所做的修改不会在提交后出现。
- 提交状态——这是 Git 保存您修改的更改的时间。
您可以使用该命令git status查看您的文件当前处于哪些状态。
当您提交一些代码时,Git 会为您的代码的特定版本拍摄快照,您可以在稍后阶段引用它。
所以你可以说 Git 是一个项目引用的数据库。该数据库是使用三种类型的对象构建的:
- 包含每个提交的元数据的提交,例如消息和作者,
- 包含对文件名、文件内容和有时其他树的引用的更改树,
- 以及代表文件中保存的实际数据的 blob。
.git 文件夹内的内容
注意:在某些情况下 .git 文件夹在 macOS 中是隐藏的,因此您必须在系统设置中启用隐藏文件才能看到它。