git status --ignore-submodules=all
我正在寻找这个的反向操作,是否有一种方法只打印子模块更改?例如git status --show-only-submodules
编辑:
我的脚本获取并合并子模块更改,然后获取并合并超级项目更改。现在,我需要检查新拉入的超级项目更改是否包含子模块更改的SHA更新,为此我想在超级项目中执行git show HEAD^ HEAD
,它会打印以下内容:
--- a/xyz
+++ b/xyz
@@ -1 +1 @@
-Subproject commit f991877822a8fd50b90f53894f2592a852039547
+Subproject commit f57c051f91b0948a5b8947430b516e650b50348e
从这里开始,我将采取 +Subproject commit
并进入 xyz
目录,执行 git log -1 --no-merges
并比较 SHAs,如果匹配,则假定超级更改包括已拉入的子模块更改。
因此,当我在超级项目中执行 git status --some-option
时,我喜欢列出 仅子模块更改。请让我知道是否有更好的方法来执行相同的操作。
git submodule foreach 'echo $path $(git log -1 --format=format:%H --no-merges)'
在foreach
中会给我提取的更改的sha,再次感谢。 - rodeegit status
不会列出未更改的文件,而对于每个子模块,git submodule foreach git status
会显示:“nothing to commit, working tree clean”。我理解为什么会这样,但这并没有改善情况。 - DimanNe