比较和对比本地存储库和远程存储库

已完成

Git 是一个分布式系统,源代码位于每个开发人员的计算机上。 其中包括完整历史记录,包含对该项目进行的所有提交。 这称为本地存储库

这样开发人员就可以在自己的隔离环境中工作,不必担心在开发功能时就有人来破坏代码。 它还支持将代码与以前的版本、回滚代码、合并代码等进行比较。 您甚至可以在没有网络连接的情况下进行比较。

开发人员使用 Git 执行的大部分操作都将在本地存储库中完成。 Git 支持(并且推荐)使用分支。 分支将在单独的模块中讨论,但大多数分支也是在本地存储库中创建的。

在之后的阶段,您需要与开发团队共享您的修改或新功能。 因此,Git 会使用远程存储库。 本地存储库也可以根据需要链接到多个远程存储库。 远程存储库用于轻松与其他团队成员共享代码,也可用于设置生成管道。 这些管道可生成推送到远程存储库的代码。 推送可以是启动管道的触发器。

本地存储库

在本地存储库中,我们可以区分三种不同的区域或目录。

  • 工作目录:这是代码某个版本的单一签出。 工作目录将包含您正在处理的代码。 您可以使用 checkout 命令更改文件。 每次更改活动工作分支时,工作目录中的文件将更改为与特定版本的代码相似。 Windows 资源管理器中显示的文件是工作目录中的文件。

  • 暂存区域:本区域作为工作目录和 Git 目录之间的区域。 将工作目录中的文件提交到 Git 目录之前,您首先需要暂存该文件。 然后,该文件将标记为下一次提交。 您可以继续处理该文件。 不会在下一次提交中添加对该文件所做的所有未暂存的修改。 将仅添加已暂存的文件内容。 如果您正在处理一项功能,但尚未完全完成,暂存就很有用。 您可以将改动暂存并继续工作。 如果需要在一天的工作结束时提交,您仍然可以提交工作版本(来自暂存区域的版本),不会有提交未完成文件的风险。

  • Git 目录:Git 目录包含所有元数据和对象数据库。 您提交到 Git 目录的每个文件都将存储在本目录中。 如果在 Windows 资源管理器中启用隐藏项,您将看到一个隐藏的 .git 文件夹。 本文件夹中有包含对象的子文件夹,也有指针信息。 如果删除本文件夹,本地 Git 存储库将消失。 这样您也可以轻松地将本地存储库放在 USB 驱动器上,随身携带,并在其他计算机上使用。 请勿将本目录弄乱,否则您的本地存储库将被破坏。 这也是将与远程存储库同步的目录。

本地存储库各区域流程图,包含工作目录、暂存和存储库。

使用本设置,Git 内的文件有以下三种状态。

  • 未修改并存储在 Git 目录中:文件已提交

  • 已修改并在暂存区域中:文件已暂存

  • 已修改且未在暂存区域中:文件已修改

Git 文件生命周期

在下一个架构中,您可以看到文件经历的完整生命周期。 第一次创建新文件或添加到 Windows 资源管理器中的文件夹时,该文件为未跟踪状态。 该文件并未进入 Git 生命周期。 使用 add 命令将本文件添加到暂存区域,它将变为暂存状态。稍后,您可以使用 commit 命令将文件添加到 Git 目录。 然后,该文件将变为未修改状态。 每次您编辑文件时,文件将变为修改状态,而从 Git 目录中删除该文件时,文件将变为未跟踪状态。 使用 rm 命令可删除文件。 从 Git 目录中删除文件并不意味着该文件也将从磁盘上删除。 这是您作为开发人员必须手动执行的操作。

具有未跟踪、未修改、修改和暂存区域的 Git 文件生命周期图。

远程存储库

使用远程存储库时需要通过 pushpull 命令与本地存储库同步。 因此,即使您要共享代码或从团队获取更新,也是通过更新本存储库的命令完成的。 由于每个存储库都是独立的,存储库的所有者负责将其保持为最新状态,包含他人所做的更改。

在下一个架构中,您可以看到两个开发人员如何使用远程存储库共享修改。 开发人员 A 将更改提交到本地存储库,并使用 push 命令将修改上传到远程存储库。 开发人员 B 可以使用 pull 命令下载修改,还可以推送修改。

两名开发人员使用远程存储库的图表。