Короткая версия, измените вашу команду на:
git submodule foreach "git commit -m 'fixed header guards' || :"
Более длинная версия: Как указано на странице man:
Ненулевой возврат команды в любом подмодуле вызывает обработка завершается.
И рекомендует:
Это можно изменить, добавив || : до конца команды.
Что это делает:
Список ИЛИ имеет вид
command1 || command2
command2
is выполняется тогда и только тогда, когда command1
возвращает ненулевой статус выхода. Состояние возврата списков AND и OR - это состояние завершения последней команды, выполненной в списке.
И :
равно bash s nop
: ничего не делать, (и всегда ) верните успех.
Двойные кавычки вокруг command
части submodule foreach
гарантируют, что все это передается git
как один аргумент, и оболочка, из которой вы вызываете его, не анализирует || :
бит сам по себе.