咱們開發項目的時候,會常常碰到可服用模塊,好比各類utils包
,登陸
,分享
之類的共有模塊,並不想寫在項目自己,而是抽出來能夠爲多個項目所複用。
如今咱們項目中用了倆種模式git
子模塊容許你將一個 Git 倉庫做爲另外一個 Git 倉庫的子目錄。 它能讓你將另外一個倉庫克隆到本身的項目中,同時還保持提交的獨立。github
git 經過在 git submodule add 命令後面加上想要跟蹤的項目 URL 來添加新的子模塊。npm
$ git submodule add https://github.com/chaconinc/DbConnector Cloning into 'DbConnector'... remote: Counting objects: 11, done. remote: Compressing objects: 100% (10/10), done. remote: Total 11 (delta 0), reused 11 (delta 0) Unpacking objects: 100% (11/11), done. Checking connectivity... done.
接下來咱們將會克隆一個含有子模塊的項目。 當你在克隆這樣的項目時,默認會包含該子模塊目錄,但其中尚未任何文件:code
$ git clone https://github.com/chaconinc/MainProject $ cd DbConnector/ $ ls $
其中有 DbConnector 目錄,不過是空的。 你必須運行兩個命令:git submodule init 用來初始化本地配置文件,而 git submodule update 則從該項目中抓取全部數據並檢出父項目中列出的合適的提交。開發
$ git submodule init Submodule 'DbConnector' (https://github.com/chaconinc/DbConnector) registered for path 'DbConnector' $ git submodule update
不過還有更簡單一點的方式。 若是給 git clone 命令傳遞 --recursive 選項,它就會自動初始化並更新倉庫中的每個子模塊。rem
$ git clone --recursive https://github.com/chaconinc/MainProject Cloning into 'MainProject'...
在包含子模塊的項目上工做get