常常有这样的事情,当你在一个项目上工做时,你须要在其中使用另一个项目。也许它是一个第三方开发的库或者是你独立开发和并在多个父项目中使用的。这个场景下一个常见的问题产生了:你想将两个项目单独处理可是又须要在其中一个中使用另一个。
子模块容许你将一个 Git 仓库看成另一个Git仓库的子目录。这容许你克隆另一个仓库到你的项目中而且保持你的提交相对独立。git
首先你要把外部的仓库克隆到你的子目录中。
假设你想把 pacman项目加入到你的blog项目中,你经过git submodule add
将外部项目加为子模块:code
cd blog git submodule add https://gitcafe.com/aceking/pacman.git themes/pacman
如今你就在项目里的themes/pacman子目录下有了一个 pacan项目。你能够进入那个子目录,进行变动,加入你本身的远程可写仓库来推送你的变动,从原始仓库拉取和归并等等。blog
.gitmodules文件: 这是一个配置文件,保存了项目 URL 和你拉取到的本地子目录。开发
克隆你刚才建立子模块的项目。你将获得了包含子项目的目录,但里面没有文件:pacman目录存在了,可是是空的。
你必须运行两个命令:git submodule init
来初始化你的本地配置文件,git submodule update
来从那个项目拉取全部数据并检出你上层项目里所列的合适的提交。get
cd blog git submodule init themes/pacaman git submodule update
如今你的pacman子目录就处于你先前提交的确切状态了。it
参考:
Git-子模块module