使用场景:
当在一个Git 项目上工作时,需要在其中使用另外一个Git 项目,也许它是一个第三方开发的Git 库或者是独立开发并在多个父项目中使用的。这个情况下一个常见的问题产生了:想将两个项目单独处理但是又需要在其中一个中使用另外一个。
submodule子模块:
在 Git 中可以用 submodule 子模块来管理这些项目,submodule允许将一个Git 仓库当作另外一个Git 仓库的子目录。这允许克隆另外一个仓库到项目中并且保持提交相对独立。
添加子模块:
假设:将远程项目https://github.com/maonx/vimwiki-assets.git作为子模块,克隆到本地一个项目的assets文件夹中。
$ git submodule add https://github.com/maonx/vimwiki-assets.git assets
添加子模块后运行 git status
, 可以看到目录有增加 .gitmodules
文件和 assets 文件夹。
.gitmodules
这个文件用来保存子模块的信息。
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: .gitmodules
new file: assets
查看子模块:
$ git submodule
e33f854d3f51f5ebd771a68da05ad0371a3c0570 assets (heads/master)
更新子模块:
更新子模块为远程项目的最新版本。
$ git submodule update --remote
克隆包含子模块的项目:
git clone https://github.com/maonx/vimwiki-assets.git assets --recursive