创建'裸'git repo而不克隆它

时间:2013-07-26 11:08:15

标签: git

Pro Git book表示我需要先在现有目录中创建repo,然后将其克隆为“bare”。我已经阅读了this article关于为什么使用'裸'存储库的问题,似乎我需要将其视为'起源',它应该用于拉动和推送。我不明白的是,为什么我需要先创建regural存储库然后将其克隆为'bare'?为什么我不能创建'bare'repo intiatilly然后从那里的目录提交文件?

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

3 个答案:

答案 0 :(得分:2)

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

$ git init --bare <directory>

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

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

答案 1 :(得分:2)

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

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

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

如果您想将现有文件放入裸仓库,您有两种方法可以解决这个问题:

  1. 创建一个正常的repo并将文件提交给它,然后将其克隆到一个裸仓库(如你的问题所述)
  2. 创建一个裸仓库,将其克隆到正常仓库,将文件提交到正常仓库,然后推送到裸仓库。
  3. 在变体1中省略了原始非裸机的遥控器添加,您可以看到变体2有更多步骤。

答案 2 :(得分:2)

  

为什么我不能创建'bare'repo intiatilly然后从中提交文件   目录那里?

因为无法将文件提交到裸仓库

通常,如果您创建存储库(使用git initgit clone),git将创建存储库结构(.git subdir)和工作树,这是当前提交的目录文件已签出。

一个简单的回购只是一个没有相关工作树的回购。因此没有办法将文件提交到其中,因为没有工作树可以将文件放入提交中。