裸存储库和克隆

时间:2016-05-11 13:50:52

标签: git

在这link中,我发现以下对我来说没有多大意义的话(重点是我的):

  

Bare Repositories

     

--bare标志创建一个没有工作的存储库   目录,无法编辑文件和提交更改   那个仓库。 应始终将中央存储库创建为   裸存储库,因为将分支推送到非裸存储库   有可能覆盖变化。想想--bare是一种方式   将存储库标记为存储工具,与开发相对立   环境。这意味着对于几乎所有的Git工作流程,   中央存储库是裸的,开发人员本地存储库是   非裸露。

Bare Repositories 部分后面有一个示例,对此我并不理解以下声明:

enter image description here

此声明与使用示例之后的 git clone 命令之间的区别是什么?

2 个答案:

答案 0 :(得分:0)

据说如果你以任何一种集中的方式工作,首先要建立一个中央存储库,每个人都会pullpush来。你可以使用git init --bare

然后每个人都使用git clone <url_to_newly_created_repository>

从中央存储库中克隆

答案 1 :(得分:-1)

裸存储库尚未包含文件结构。因此,它们无法改变。当您在Github上创建一个没有任何文件的存储库时,Github会提示您首先将提交推送到存储库以创建它;这是因为Github上的新存储库是一个存储库。

开发人员不在裸存储库中工作,因为当您在存储库中工作时,它是裸存储库的后一个副本,实际上确实包含文件结构(它不再是裸存储库)。

如果你在一个裸存储库中工作,那么就没有git跟踪的文件信息,这就形成了一个矛盾。一个至少有一个提交的有效git存储库不是裸的,没有任何提交的git存储库是裸的。

当您托管自己的git存储库时,请理解这一点;给你的解释是有效的,因为它告诉你如何设置自己的存储库版本。如果您的存储库还没有提交,那么它就是一个裸存储库。

git clone 将存储库的提交历史记录从中央存储库提取到您自己的本地计算机;克隆的存储库必须至少有一个提交,因此它不是裸露的。