問題設置,跳到問題的換行。隱藏git子模塊子目錄,直到子模塊初始化調用
我在projectA上工作,它有它自己的git repo。這個projectA在projectB中有一些可選的工具,它是它自己獨立的git倉庫。根據我的理解,這聽起來像是一個git子模塊的情況,使projectB成爲projectA的子模塊。
要設置這個,我使用git submodule add projectB
。這將在projectA中創建一個子目錄,它的作用類似於projectB的鏈接,該信息保存在.gitmodule
中。你需要提交這個文件和「子目錄」。我可以繼續在projectA上進行開發,而不必關注projectB。當我更新projectB並推送它們時,我可以使用git submodule update --remote
更新projectA中的projectB。這通過將文件內部更新爲projectB的當前版本(未由projectA跟蹤)和子目錄文件本身(由projectA跟蹤)來更改projectA中的projectB子目錄。
現在假設第三個用戶想要使用projectA並創建projectC,但不需要projectB。他們使用git clone projectA
,他們得到projectA和.gitmodule
的所有項目以及projectB的空子目錄。我希望他們仍然可以得到.gitmodule
,以便他們將來有選擇,但有可能使他們不會獲得projectB的空子目錄?
我的問題是有可能隱藏一個子模塊項目B在了projectA用戶執行git submodule init
>git submodule update
前的子目錄?
恐怕這是不可能的,因爲該子目錄實際上是一個特殊的git文件,告訴哪個提交得到projectB,我原以爲被保存在.gitmodule
。我感興趣的是,如果有更好的方法來實現我想要完成的任何git hack。
一種解決方案是讓隱藏目錄調用'。子模塊全部駐留的模塊('mkdir .modules; cd .modules; git submodule add projectB')。然後,我會指示用戶在他們的工作目錄中創建一個符號鏈接ln -s .modules/projectB,並將名爲'projectB'的文件的符號鏈接添加到'.gitignore'中。那些必須執行'git submodule init'的額外步驟; git子模塊更新;無論如何,ln -s .modules/projectB'不應該是一個大問題,並且爲那些不需要子模塊的人保持項目清潔。 –