第 11 章 远程存储库 远程存储库
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
到目前为止,我们几乎都是在 的本地仓库中工作。现在是时候探索 Git 广受赞誉的分布式功能,学习如何通过共享仓库与其他开发人员协作了。
在 Git 术语中,多仓库和远程仓库的工作增加了一些新的术语。
克隆是版本库的副本。克隆包含原始版本库中的所有对象;因此,每个克隆都是一个独立自主的版本库,是原始版本库真正的、对称的对等版本库。克隆允许每个开发人员在本地独立工作,无需集中、轮询或锁定。归根结底,正是克隆让 Git 能够轻松扩展,并允许许多分布在不同地域的贡献者。
从根本上说,在以下情况下,单独的存储库是有用的:
-
当开发人员自主工作时。
-
当一个项目预计会在不同的开发路径上出现重大分歧时。虽然前几章中演示的常规分支和合并机制可以处理任何数量的独立开发,但由此产生的复杂性可能会带来更多麻烦,得不偿失。相反,不同的开发路径可以使用不同的版本库,并在适当的时候再次合并。
克隆版本库只是共享代码的第一步。你还必须将一个仓库与另一个仓库关联起来,建立数据交换路径。Git 通过所谓的 "远程"(remotes)来建立这些仓库连接。
本章分为五个部分,每一部分都是在前一部分的基础上逐步深入,以解释使用远程版本库的概念。在"第一部分:版本库概念 "中,我们将介绍版本库概念和使用远程版本库的方法。在"第二部分:使用远程版本库的示例 "中,我们提供了在多个版本库之间共享、跟踪和获取数据的示例和技术。在"第三部分:图解远程资源库开发周期 "中,我们详细介绍了远程资源库的开发生命周期,从而直观地加强了学习效果。在"第四部分:远程配置 "中,我们讨论了管理任何给定版本库的远程配置的多种方法。在"第五部分:使用跟踪分支 "中,我们将通过解释使用推荐的最佳方法来使用远程跟踪分支的重要性来结束学习。
第一部分:存储库概念
本部分讨论的仓库概念是在共享和分布式环境中理解和使用 Git 仓库的基石。接下来的章节将介绍关键原则和重要术语,帮助你过渡到在 Git 仓库中工作。
裸机和开发库
Git 仓库可以是裸仓库,也可以是开发(非裸)仓库。
开发版本库用于正常的日常开发。它维护当前分支的概念,并在工作目录中提供当前分支的签出副本。到目前为止,书中提到的所有版本库都是开发版本库。
相比之下,裸仓库没有工作目录,不应该用于正常开发。此外,裸仓库也没有已签出分支的概念。你可以把裸仓库简单地理解为.git目录的内容。换句话说,你不应该在裸仓库中进行提交。
裸仓库看似用处不大,但其作用却至关重要:它是协作开发的权威联络点。其他开发人员会从裸仓库clone 和fetch ,并push 更新到裸仓库。我们将在本章稍后部分举例说明所有这些是如何协同工作的。
首先,让我们看看--bare 标志如何影响 创建开发版本库和裸版本库时初始化的目录:
# Development (nonbare) repo
$ cd /tmp
$ git init -b main fluff
Initialized empty Git repository in /private/tmp/fluff/.git/
$ tree fluff
fluff
0 directories, 0 files
# Bare repo
$ git init --bare -b main fluff-bare Initialized empty Git repository in ...Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access