Просто заключите команду в двойные кавычки, например:
foo = !"echo foo; echo bar"
Чтобы включить точку с запятой для find
, дважды выделите ее, как:
pull-all = !"find . -name .git -type d -print -execdir git pull origin \\;"
То же самое с вашимкоманда:
my-alias = "submodule foreach 'git foo; git bar'"
Для устранения неполадок добавьте к своей команде префикс GIT_TRACE=1
для отладки псевдонима, например,
$ GIT_TRACE=1 git my-alias
18:16:07.904421 git.c:282 trace: alias expansion: my-alias => 'submodule' 'foreach' 'git foo; git bar'
18:16:07.904437 git.c:557 trace: exec: 'git-submodule' 'foreach' 'git foo; git bar'
18:16:07.904443 run-command.c:347 trace: run_command: 'git-submodule' 'foreach' 'git foo; git bar'