git bare中怎么可能没有工作目录



我读了这篇文章,不明白git init --bare时为什么没有工作目录。怎么可能没有工作目录?这不是你所有文件所在的目录吗?当你在repo中创建一个文件时,这不是启动了一个工作目录吗?

我也不明白第二颗子弹,那就是:

没有创建.git目录。相反,文件通常位于.git目录被放置在工作目录通常是.

没有.git目录的目的是什么?这是如何导致作者的例子中关于非裸回购的创建者执行git status并看到的

git会找到不同的对象数据库并给出不同的结果对于这次git状态的运行。

裸Git和非裸Git存储库之间的区别具有误导性,可能会混淆新用户。

怎么可能没有工作目录?这不是你所有文件所在的目录吗?

否。实际上,所有的信息(即形成git存储库的所有数据)都存储在.git/文件夹中,该文件夹位于项目的根目录中(假设它是一个非裸repo),这就是git本身创建工作目录所需的全部内容。

工作目录不包含任何关于存储库的状态(例如分支、标记、提交),从技术上讲也不是它的一部分(即没有必要)。这只是程序员编辑文件的一种方式。

这可能有助于理解,当你从Github上的存储库进行常规克隆时,驻留在Github服务器上的存储库是一个裸存储库,但你得到的是一个非裸存储库。

现在开始你的第二个问题。

没有.git目录的目的是什么?

思考一下:git服务器中工作目录的用途是什么存储在服务器中的存储库不需要工作目录,因为没有人会直接将SSH连接到git服务器中并在那里编辑文件。

因此,通过只保留所需的内容(即.git/目录的内容)来简化存储库结构。此外,.git/目录的内容被放在项目的根文件夹中,因为根目录中没有其他文件,所以将它们保留在.git/中没有多大意义。