2013-07-26 44 views
1

Pro Git book指出我需要先在现有目录内创建回购,然后克隆它为'裸'。我已阅读this article关于为什么使用'裸'存储库,似乎我需要把它视为'起源',它应该用来拉和推。我不明白的是,为什么我需要首先创建管理库,然后将其克隆为“裸”?为什么我无法创建'裸'回购,然后提交目录中的文件?创建'裸'git回购没有克隆它

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

回答

2

您可以创建一个裸露的程序存储库足够容易:

$ git init --bare <directory> 

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

不,遥控器在裸仓库反正非常有用......

+0

谢谢!我已经知道你从git remote list中克隆出来的存储库变成'origin'了:) –

+0

'如果你克隆了它,你可以在克隆后删除原来的存储库。' - 我想这可能是第一个很好的补充选项在@Nevik Rehnel发布的帖子中列出 –

+0

你可以,但你不必,@Maximus。你可以使用最初的回购作为一个正常的工作克隆。 –

2

这可能是开始情形稍有分歧。

可以通过使用git init --bare创建一个像其他任何其他裸回购。这将创建没有任何内容的存储库。

然而,并不克隆与沟通,你没有得到的文件进去的方式,因为裸露的回购没有工作目录

如果你想要把现有的文件到裸回购,你有去大约两个方面:

  1. 创建一个正常的回购和您的文件提交给它,然后将其克隆到裸回购(如你的问题所述)
  2. 创建一个裸回购,克隆它到一个正常回购,提交你的文件到正常的回购,然后推到裸回购。

如果没有在远程变体1中添加原始非裸机,您可以看到变体2具有更多步骤。

+0

好的,谢谢!我想这是一个误解:)。我想我仍然失去了为什么我需要裸回购。有什么好的网页上的文章或在解释它的stackoverflow问题? –

+0

http://bare-vs-nonbare.gitrecipes.de/可能会帮助 –

+0

谢谢!我想现在我已经明白了。如果我只为推/拉操作使用“裸”回购,并且实际提交将在本地非裸仓中进行,我不需要从正常回购开始。 –

2

为什么我无法创建'裸'回购,然后提交 目录中的文件呢?

因为你不能将文件提交到裸回购。通常情况下,如果你创建一个仓库(使用git initgit clone),git将创建仓库结构(.git子目录)和一个工作树,这是一个工作树,它是当前提交文件被签出的目录。

裸露的回购仅仅是一个没有关联工作树的回购。所以没有办法将文件提交到它,因为没有工作树来提交文件。

+0

感谢您的澄清! –