自動目錄
有時寫的專案中還有引入另一個專案,不管是自己的其他專案或是別人的,簡易的作法是到該目錄下clone 一個進來:
簡單的來說:為了管理自己專案中的其他專案,就得用git submodule 這個功能:
--我的專案
L 另一個專案
另一個專案可是自己或是別人的專案
但這樣的就會遇到2個問題:
1當另一個專案有更新時,我的專案還得另外到那個目錄作update(pull)的動作來確保更新。
2 在提交到伺服器時,另一個專案不會一併提交。當別人取回時,會得到一個空目錄。
一、在我的專案中要加入一個別人的專案
例如我要拉ThirdParty-Project這個專案到我的目錄libs/third下,可下指令
$ git submodule add https://github.com/user/ThirdParty-Project libs/third
這裡的目錄 libs/third 不能先建,git會自己建立。建立完git 會產生一個檔案 .gitmodules,內容大概是這樣:
[submodule "libs/third"]
path = libs/third
url = https://github.com/user/ThirdParty-Project
同時,git 也會把這個專案順利的抓回來。
二、我們把專案寫好發佈到伺服器
$ git commit -a -m update_memo
三、別人拉回我們的專案
$ git pull origin master
(origin:視各位的reposity設定,master:視各位的分枝而不同)
會發現別人的專案這個目錄是空目錄
$ cd libs/third
$ ls
一片空,別緊張,因為我們還沒有初始化這個次模組
四、初始化並拉回的專案
在你git的最上層目錄執行
$ git submodule init
$ git submodule update
這樣我們取回的複本,就能夠順利另外取得第三方的專案內容了。
如果沒到最上層執行,會出現下面的錯誤,只要到你原本下git init那層執行即可
You need to run this command from the toplevel of the working tree.
原文 2013-12-03 15:41:36