<project>.git 文件从何而来?

Where does the file <project>.git come from?

我已经初始化了几个本地 git 存储库,但其中 none 有一个 <project>.git 文件;只有一个 .git 目录。我想将这些存储库中的一个克隆到本地网络上的另一台机器,但 clone 似乎需要一个 <project>.git 文件。这个文件是如何生成的?

要获得 project.git(而不是 project/.git),您需要使用 git clone --baregit init --bare

这将创建一个 bare repository,只有 .git 内容,没有工作树。

您似乎在尝试托管 git 服务器

git documentation to setup git server

如果您只需要将项目复制到其他机器上,其中包含所有文件和 git 数据,那么只需复制包含 .git 存储库的文件夹。 .git 目录包含 git 的元数据(以及所有版本历史记录)。这将包含项目的完整工作树和 git 版本历史记录。这称为非裸存储库。

一个non-bare repository是另一个repository的clone,加上local state,比如.git/HEAD,表示check out了哪个revision,index,用来标识修改了什么签出树并帮助准备提交对象等

裸仓库是 project.git,它不包括工作树,只包括 .git 文件夹。使用 git init --baregit clone --bare 创建的裸存储库基本上用于共享。如果您正在与一组开发人员协作,并且需要一个地方来共享对存储库的更改,那么您可以在集中位置创建一个裸存储库,所有用户都可以在其中推送他们的更改。

因此,如果您需要 bare 存储库,即 project.git,您将需要创建一个。目录中的 project.git.git 文件夹相同,其中包含 git 元数据和版本历史记录。