git -submodules / repo - 如何在单独的模块中为一堆分支使用commit和branch?

时间:2013-01-29 21:25:17

标签: git git-submodules repository

我有repo包装器和大约十几个不同的git存储库。

我想要一个可以在以后申请/使用的补丁 以下列方式:

我想在所有已更改的子模块上执行此命令:

git checkout -b all_sub_branch
git commit -a all_submodules
git format-patch all_submodules aaa.patch
git apply aaa.patch

1 个答案:

答案 0 :(得分:1)

普通香草git答案(使用子模块):

为每个子模块完成的这种过程可以通过以下方式启动:

git submodule foreach [--recursive] ...

用'...'表示包含所有命令的git别名。

来自git submodule man page

foreach
  

在每个签出的子模块中计算任意shell命令   该命令可以访问变量$name$path$sha1$toplevel

     
      
  • $name.gitmodules中相关子模块部分的名称,
  •   
  • $path是相对于超级项目的子模块目录的名称,
  •   
  • $sha1是超级项目中记录的提交,
  •   
  • $toplevel是超级项目顶级的绝对路径。
  •   
     

此命令会忽略超级项目中定义但未检出的任何子模块   除非给定--quiet,否则foreach会在评估命令之前打印每个子模块的名称   如果给出--recursive,则递归遍历子模块(即,给定的shell命令也在嵌套的子模块中进行计算)。


问题是android repo wrapper command以自己独特的方式执行git子模块所做的事情 相当于git submodule foreach可能是:repo forall,例如:

repo forall -c 'git status'