2013-07-26 45 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

感謝您的澄清! –