如何防止 git 中未推送的子模块

Zer*_*nel 6 git git-submodules

git 中是否有一些钩子脚本可以在推送到主项目时检测子模块源代码树是否可用?旨在避免人们推送具有未推送子模块的主项目

Von*_*onC 6

您可以使用(git 1.7.7+):

 git push --recurse-submodules=on-demand
Run Code Online (Sandbox Code Playgroud)

我将其呈现在“ Git submodule push ”中,它会检测任何子模块修改,在推送主存储库之前先推送它。


请注意,有 2 个选项:

git push --recurse-submodules=check
git push --recurse-submodules=on-demand
Run Code Online (Sandbox Code Playgroud)

确保要推送的修订版本使用的所有子模块提交在远程跟踪分支上可用。

  • 如果check使用 git 将验证在要推送的修订中更改的所有子模块提交是否在子模块的至少一个远程上可用。
    如果缺少任何提交,推送将中止并以非零状态退出。

  • 如果on-demand使用,则将推送要推送的修订版中更改的所有子模块。
    如果 on-demand 无法推送所有必要的修订,它也将被中止并以非零状态退出。