2012-12-28 125 views
0

我有一個包含我通過git clone無法添加包含git克隆子目錄的目錄?

創建子目錄一個directoryA我想創建爲directoryA一個Git倉庫。
但是當我做git add -A && git commit -m "w"什麼都不承諾。

我是否需要特別小心處理git-cloned subdirectories

directoryA是我用於我的項目的圖書館集合的特殊目錄。

+0

我想你想看看git的子模塊。 – Thilo

回答

0

您正在創建的是未初始化的子模塊,並且是的子模塊需要一些特殊處理纔能有效使用它們。

一旦子模塊被初始化,您將能夠從父項目中提交它所在的子目錄。

子模塊超越了基本的git,有一點學習曲線,但一旦理解,就可以很好地服務它們的目的,並很好地與git的其餘部分進行合併。

是什麼讓子模塊特殊的處理可以在幾個關鍵的概念來概括:父庫知道他們之前

  • 模塊必須被初始化。
  • 子模塊必須被克隆,更新並專門提交,雖然有一些命令選項會自動執行某些操作。
  • 子模塊是完整的存儲庫,檢出一個提交;因此他們是無頭的,並且必須在創建任何更改之前創建分支。
  • 在更改父存儲庫之前,應首先檢查對子模塊的任何更改。子模塊的父更新實際上是父子知道哪些子模塊提交的更新。

這裏有幾個鏈接對我來說非常有幫助,當我需要深入探討子模塊時,這些鏈接對於跟蹤我的各個項目非常有幫助。

Git Tools - SubModules

Git Submodules: Adding, Using, Removing, Updating

Understanding Git Submodules

0

通常,git不允許將一個git存儲庫放在另一個git存儲庫的子目錄中。

此規則的唯一例外是使用git submodules。但是,這有很多你可能不喜歡的其他含義。例如,父git存儲庫必須跟蹤必須檢出哪個特定的提交ID子模塊。如果您將新內容提交到子模塊中 - 在本地或從外部提取,則還必須更改父回購狀態並創建一個更多的提交以反映子模塊狀態。

爲了解決這些問題,Android項目創建了另一種處理這些問題的方法,即他們創建了repo。雖然repo主要被Android項目使用,但它是非常通用的機制,可用於任何其他目的。

repo依賴於XML文件調用清單(它住在它自己的小Git倉庫中)。清單定義了定義整個項目的所有git存儲庫在哪裏被檢出,以及在哪些版本和分支上。這是非常強大的機制。回購的唯一限制是它不支持Windows,因爲它需要使用符號鏈接(但支持非常好的Linux和Mac)。

+0

'directoryA'是我用於我的項目的庫集合的特殊目錄。我應該看看子模塊嗎? – eugene

+0

你也可以使用android'repo' - 我認爲長期來看子模塊會有更多的麻煩(我已經更新了我的回答來描述'repo') – mvp