咱们开发项目的时候,会常常碰到可服用模块,好比各类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