2014-01-08 27 views
1

我需要添加一些JS庫到我的項目中,我也希望能夠從它的回購庫中更新該庫(這就是爲什麼我將它添加爲子模塊的原因)。但我只需要從該回購庫中的1個文件放入我的JS目錄,而庫存儲庫包含測試,coffeescript源等,這在我的存儲庫中不需要。所以問題是 - 如何添加不完整的回購作爲子模塊,但從它的單個文件/目錄?GIT:只添加遠程資源庫中的一些文件作爲子模塊

我想這是與Git Sparse checkouts幫助某種程度上可以,但不知道如果我在這個正確的方式...

回答

4

這是可能的,我已經做了很多次。

您只需創建作爲子模塊添加的存儲庫的分支,並刪除不想要的所有代碼,然後將子模塊添加到該分支中。

舉個例子,看看這個repository

+0

謝謝Abizem,這看起來像一個很好的解決方案,但因爲我'在git中很弱我無法想象如何設置從開發到主分支的自動更新。沒有自動更新,如果我必須手動完成,它將幾乎相同,如果我甚至不使用子模塊來替換該文件。 – SET

+0

我不明白你的意思是「從開發到主」和「自動更新」。 – Abizern

+0

'master'分支現在只在repo的根目錄中包含一個最終編譯文件,'development'包含開發所需的所有內容以及子目錄中某個位置的相同文件。現在,如果有什麼東西會被推到'開發'分支 - 'master'中的文件也應該更新 - 這就是我的意思是自動更新。有沒有辦法做到這一點? – SET

3

爲了增加Abizernanswer(upvoted),你可以宣佈你的子模塊(設置爲包含你想要的文件的分支),以follow that branchgit submodule man page ):

git submodule add -b yourSubmoduleBranch /url/to/your/submodule/repo 

如果您已經添加子模塊,而不-b,你可以添加選項很輕鬆地:見「Git submodules: Specify a branch/tag」。

# Make sure your submodule is actually at the latest of that branch: 
cd path/to/your/submodule 
git checkout -b branch --track origin/branch 
# record that on the parent repo 
cd /path/to/your/parent/repo 
git config -f .gitmodules submodule.<path>.branch <branch> 
git add yourSubmodule 
git commit -m "Submodule now follows branch" 

所有你需要爲你的子模塊,以反映最新的修改,現做現,父回購級別:

git submodule update --init --remote --recursive