skr*_*rat 7 git git-submodules
我有 git repo,在那里我使用extern/dir 中的git 子模块链接我的一些依赖项。假设我有一个依赖项A作为子模块,位于extern/A. 现在A本身有一些依赖项作为 git 子模块。InA的回购,即,例如。A/test/data/X.
现在,当我克隆我的 repo 并运行时git submodule update --init --recursive,为了在 CI 服务器上构建它,或者,我希望上面的命令忽略exter/A/test/data/X,因为它就像我不想要的 1G 数据。
然而,我的其他依赖项有一些有用的子模块,所以我不能跳过--recursive. 有没有办法做到这一点?
您可以使用submodule.<name>.update配置变量来设置应该更新哪个子模块,如此处所述
如何从更新中排除特定的 git 子模块?.
如果要排除A中的子模块X,那么可以使用如下命令:
git -c submodule."X".update=none submodule update --init --recursive
Run Code Online (Sandbox Code Playgroud)
注意:这假设 repo A 中的子模块 X(它是 extern 的子模块)在整个 repo extern(包括其所有子模块及其子模块等...)中是唯一的如果 X 不是唯一的,那么所有名为 X 的子模块将在 repo extern 中被跳过。
您可以在克隆过程中跳过子模块,使用以下命令:
$ git -c submodule."X".update=none clone --recurse-submodules <repository>
Run Code Online (Sandbox Code Playgroud)
如果子模块位于存储库下的目录中,则子模块名称中应包含与其存储库相关的相对路径。为避免混淆,您可以从.gitmodules存储库中的文件中获取子模块名称。
考虑以下示例.gitmodules文件,
[submodule "path/to/submodule_X"]
path = path/to/submodule_X
url = https://github.com/<user>/<repo>
[submodule "Y"]
path = Y
url = https://github.com/<user>/<repo>
Run Code Online (Sandbox Code Playgroud)
如果你想跳过子模块 X,那么用这个替换<name>in 。这同样适用于嵌套的子模块。submodule.<name>.update"path/to/submodule_X"
| 归档时间: |
|
| 查看次数: |
4322 次 |
| 最近记录: |