从所有子模块中删除分支

从所有子模块中删除分支

我有一个包含很多子模块的项目,我想删除子模块中所有名为 foo 的远程分支,如果存在的话

我正在尝试以下操作:

git submodule foreach git push origin :foo

如果分支存在于以下位置,这将按预期工作全部子模块,但如果任何子模块缺少分支,则 foreach 将停止:

Stopping at 'modules/bar'; script returned non-zero status.

如何抑制错误?

答案1

来自git 子模块手册页:

任何子模块中命令的非零返回都会导致处理终止。这可以通过添加 || 来覆盖: 到命令末尾。

这意味着以下应该完成这项工作:

git submodule foreach 'git push origin :foo || :'

||一个 OR 并执行下一个命令,如果第一个命令返回非零,则:返回 true。

相关内容