如何防止git中未刷新的子模块

时间:2014-09-19 02:23:21

标签: git git-submodules

git中是否有一些钩子脚本会检测子模块源树是否可用于推送到主项目?打算避免人们推送已经未按下子模块的主项目

2 个答案:

答案 0 :(得分:3)

你可以使用(git 1.7.7 +):

 git push --recurse-submodules=on-demand

我在“Git submodule push”中显示它,它会在推送主回购之前检测到任何子模块修改,先将其推送。


  

请注意,有两个选项:

git push --recurse-submodules=check
git push --recurse-submodules=on-demand
  

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

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

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

  •   

答案 1 :(得分:0)

您可以使用git submodule foreach为每个子模块调用任何命令,因此要检查您的分支是否在origin / master之后,请运行:

git submodule foreach git status

要从子模块推送所有更改,请运行:

git submodule foreach git push

请参阅:man git-submodule