2009-10-11 76 views
0

我是Github的開心用戶。隨着時間的推移,我積累了一些無關緊要的玩具回購。我現在想創建一個容器回購站 - 將它稱爲圍欄,將我的各種玩具項目作爲git子模塊拉到父控制檯下方,並吹向玩具回收站。玩具應該只能在嬰兒圍欄中生活。當我嘗試使用這個配方時:http://git.or.cz/gitwiki/GitSubmoduleTutorial我發現了一個很大的問題。看,我想完全回購,讓他們只活在圍欄下。當我繼續前進並在github上吹掉回購站時,我無法遵循圍欄內的鏈接。咦?Git子模塊。我如何使它們完全獨立?

有人請向我解釋如何做到這一點?在此先感謝

歡呼, 道格

回答

3

子模塊是連接在一起的存儲庫的方式,但每個子模塊是它自己完全獨立的倉庫。當您將存儲庫作爲另一個存儲庫的子模塊添加時,只會將存儲庫鏈接在一起,而不會將數據移動到父存儲庫中。出於這個原因,您無法刪除作爲子模塊的存儲庫,而不會中斷此鏈接。

0

您可以將各種存儲庫組合到一個存儲庫中,但不能與子模塊組合。雖然我可以建議劑量有一個嚴重的缺點。合併你的玩具項目後,他們不再是獨立的項目。你不能只承諾一個項目,你必須同時承諾所有這些項目。同樣,你不能只分支其中一個項目,每個分支都是所有項目的一個分支。因此,如果您已經使用了多個分支,或者有將來想要分支單個項目的任何機會,請使用單獨的存儲庫。

如果畢竟您還想合併您的各種存儲庫,那麼您可以使用how to use the subtree merge strategy中的部分想法。雖然由於您不打算保留舊版本庫,您將永遠不需要使用子樹合併。

從子樹合併戰略文件最重要的一點是下面的命令,你應該在新的容器庫運行:

$ git remote add -f Bproject /path/to/B 
$ git merge -s ours --no-commit Bproject/master 
$ git read-tree --prefix=dir-B/ -u Bproject/master 
$ git commit -m "Merge B project as our subdirectory" 

既然你要刪除原有的庫中,您還可以刪除你在開始的時候添加了遙控器,所以它不會讓你感到困惑。

$ git remote rm Bproject 

此時您的容器存儲庫包含Bproject。您可以重複這些步驟來合併其他項目。但是,正如我之前提到的,只有主分支已經合併,您的項目可能擁有的任何其他分支將不會合並。