一、gitmodules是什么
子模块允许你将一个 Git 仓库作为另一个 Git 仓库的子目录。 它能让你将另一个仓库克隆到自己的项目中,同时还保持提交的独立。
二、如何使用gitmodules
$ git submodule add https://github.com/XXX
默认情况下,子模块会将子项目放到一个与仓库同名的目录中,即“XXX”。 如果你想要放到其他地方,那么可以在命令结尾添加一个不同的路径。如果这时运行 git status,注意到新的.gitmodules文件。 该配置文件保存了项目 URL 与已经拉取的本地目录之间的映射,.gitmodules文件配置详见章节三。
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.Changes to be committed:
(use "git reset HEAD <file>..." to unstage)new file: .gitmodules
new file: XXX
如果想进一步指定分支,可以增加-b参数,详细参考如下:
$ git submodule add
usage: git submodule [--quiet] add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--] <repository> [<path>]
or: git submodule [--quiet] status [--cached] [--recursive] [--] [<path>...]
or: git submodule [--quiet] init [--] [<path>...]
or: git submodule [--quiet] deinit [-f|--force] (--all| [--] <path>...)
or: git submodule [--quiet] update [--init] [--remote] [-N|--no-fetch] [-f|--force] [--checkout|--merge|--rebase] [--[no-]recommend-shallow] [--reference <repository>] [--recursive] [--] [<path>...]
or: git submodule [--quiet] summary [--cached|--files] [--summary-limit <n>] [commit] [--] [<path>...]
or: git submodule [--quiet] foreach [--recursive] <command>
or: git submodule [--quiet] sync [--recursive] [--] [<path>...]
or: git submodule [--quiet] absorbgitdirs [--] [<path>...]
三、.gitmodules配置
[submodule "abc"]
path = abc
url = http://github.xxx.xxx/xxxx
branch = release
参考文档:
https://git-scm.com/book/en/v2/Git-Tools-Submodules
https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97