我有一个包含很多子模块的项目,我想删除子模块中所有名为 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。