git submodule foreach - 首先递归提交子模块的可靠方法?

标签 git foreach git-submodules

是否有一种可靠的方法来执行递归深度优先 git submodule foreach 命令?我正在使用完成这项工作的 foreach --recursive 命令,除了它是广度优先的。这是一个问题,因为如果我有以下结构:

  • 一个
    • B
  • C

我在所有三个中都有提交,foreach --recursive add -A && git commit ... 将命中 A、B、C,如果我希望 super 模块捕获,这是有问题的B当时的提交。

我找到了 this discussion从 2008 年开始,但我所拥有的当前 Git 版本 (1.7.9.5) 中似乎没有任何建议的功能。

我编写了一个小的 bash 函数来执行此操作(请原谅速记命名):

function git-sfed() { git submodule foreach "git submodule foreach '$*' && $*"; }

用下面奇特的命令测试它似乎有效:

git-sfed 'python -c "import sys; print sys.argv" $path'

这个命令看起来是否健壮,或者是否有其他常见的现有方法?

最佳答案

你可以试试这个

git submodule  foreach --recursive  |  tail  -r | sed 's/Entering//' | xargs -I% cd % ; git add -A \& git commit

这个列表(递归地)所有子模块,然后反转列表,tail -r 这样你就可以按照你想要的顺序获得目录( child 优先),进入目录并做你想做的事想要进去。

关于git submodule foreach - 首先递归提交子模块的可靠方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846967/

相关文章:

git - 是否可以仅恢复提交的代码块更改?

git - 使 git pull 显示更新文件的当前目录的相对路径

git - 我如何强制 git 认为文件未 merge ?

javascript - 仅从数组中的每个对象中提取某些属性,然后添加到新数组中

git - 如何设置 git 项目以使用外部 repo 子模块?

git - 如何将 core.sshCommand 选项传播到子模块更新?

其他团队成员创建的 Git 子模块

svn - 团队之间共享的库的单个或多个 Git 存储库

arrays - POWERSHELL Foreach - 多维数组返回字符串而不是数组

php - fputcsv 只从数组返回一行