1

Pro Git book指出我需要先在现有目录中创建repo,然后将其克隆为“bare”。我已经阅读了这篇关于为什么使用“裸”存储库的文章,似乎我需要将其视为“起源”,它应该用于拉取和推送。我不明白为什么我需要先创建常规存储库然后将其克隆为“裸”?为什么我不能先创建“裸”存储库,然后从那里的目录提交文件?

如果我删除创建“裸”仓库的目录怎么办?它会以某种方式影响“裸”存储库吗?

4

3 回答 3

2

您可以轻松地创建一个裸存储库:

$ git init --bare <directory>

如果你克隆了它,你可以在克隆后删除原始存储库。克隆存储库中的origin远程将无法访问,因此您可能希望之后将其删除。

并不是说遥控器在裸存储库中非常有用......

于 2013-07-26T11:12:20.677 回答
2

这可能是对起始情况的轻微误解。

可以像任何其他的一样创建一个裸仓库,使用git init --bare. 这将创建没有任何内容的存储库。

但是,如果没有一个可以与之通信的克隆,您就无法将文件放入其中,因为裸存储库没有工作目录

如果您想将现有文件放入裸仓库,您有两种方法:

  1. 创建一个普通的仓库并将您的文件提交给它,然后将其克隆到一个裸仓库中(如您的问题中所述)
  2. 创建一个裸仓库,将其克隆到普通仓库,将文件提交到普通仓库,然后推送到裸仓库。

省略在变体 1. 中为原始非裸设备添加遥控器,您可以看到变体 2. 有更多步骤。

于 2013-07-26T11:34:24.423 回答
2

为什么我不能先创建“裸”存储库,然后从那里的目录提交文件?

因为您不能将文件提交到裸仓库中。

通常,如果您创建存储库(使用git initor git clone),git 将创建存储库结构(.git 子目录)和工作树,即检出当前提交文件的目录。

裸仓库只是一个没有相关工作树的仓库。因此无法将文件提交到其中,因为没有工作树可以将文件放入以进行提交。

于 2013-07-26T11:36:59.170 回答