“git仓库”究竟是指什么?

5
假设我的工作目录中有一个名为working_directory的文件夹,其中包含一个隐藏的.git子目录(使用git init创建),除此之外没有其他内容。
我们所说的“git仓库”是指什么?它是指隐藏的.git文件夹,还是仅仅包括.git子文件夹的working_directory整个内容?
2个回答

6
这是整个工作目录的所有内容,被视为代码库。
可以这样理解:当你克隆一个代码库时,你不仅“复制”.git文件夹,还会拉下整个代码库,包括根目录、所有子文件夹和文件。
参考GitHub对“repository”的精彩定义(以下为直接引用):

代码库是GitHub最基本的元素。最好将其想象成项目的文件夹。代码库包含所有项目文件(包括文档),并存储了每个文件的修订历史记录。代码库可以有多个协作者,并且可以是公共或私有的。

虽然这个答案中提到了很多“GitHub”,但值得注意的是,代码库是Git SCM的一个元素。当然,GitHub自然也继承了它,但从根本上讲,这是Git的东西。
为了进一步扩展这一概念并给出定义,请参阅下面官方Git SCM对“repository”的定义(以下为直接引用):

一组参考文献,连同包含从参考文献可达的所有对象的对象数据库,可能还伴有一个或多个工具的元数据。通过备用机制,仓库可以与其他仓库共享对象数据库。

话虽如此,如果不了解Git,那个定义可能会让你觉得自己对代码库的理解更少了。为了理解这个特定的定义,你需要了解很多其他的Git定义。

这是工作目录的全部内容[...]。我不同意。您会说使用git clone --bare创建的克隆版本不是Git存储库,因为它缺少工作目录吗? - jub0bs
@Jubobs 我认为这应该被称为“裸仓库”。 - Thomas Stringer

0

仓库是存储副本的位,就像一个仓库一样,所以它是.git文件夹,而工作树(正确的说法是工作树)是父文件夹的内容(不包括.git文件夹)。

话虽如此,语言上的混淆非常普遍。

尝试使用git help glossary查看一些混淆术语的详细解释。

同样,git help -g将列出大多数相关指南(例如“指定修订版”指南)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接