git 使用唯一的命令提交子模块中的更改

nxagd54h  于 2023-06-28  发布在  Git
关注(0)|答案(2)|浏览(134)

我正在尝试提交在几个子模块中所做的更改:

$ git submodule foreach git commit -m 'fixed header guards'
Entering 'libs/BaseDisplay'
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean
fatal: run_command returned non-zero status for libs/BaseDisplay
.

我看到进程在第一个子模块上停止,这是最新的...但是,还有许多其他子模块具有暂存文件。如何使用唯一的命令提交在这样的子模块中所做的更改?

h6my8fg2

h6my8fg21#

简短版本,将命令更改为:

git submodule foreach "git commit -m 'fixed header guards' || :"

较长版本:如手册页所述:
任何子模块中的命令的非零返回导致处理终止。
并建议:
这可以通过添加||:到命令的末尾。
这样做的是:
OR列表具有以下形式

command1 || command2

当且仅当command1返回非零退出状态时,执行command2。AND和OR列表的返回状态是列表中执行的最后一个命令的退出状态。
:是bash的nop:什么都不做,(总是)返回成功。
submodule foreachcommand部分用双引号括起来,确保它作为单个参数传递给git,并且调用它的shell不会解析|| :位本身。

idv4meu8

idv4meu82#

由Ondrej K.对我很有效谢谢

相关问题