如何获取特定 git 子模块中已更改文件的名称列表?

How to get name list for chaned files in specific git submodule?

父git repo包含多个子模块,文件夹结构如下:

parent-dir
    src
    module-a
    module-b
    module-c
    module-spec

在一个父 git 提交中,一个子模块可能有多个提交。 如何获取父提交中包含的 module-spec 中更改的所有文件名?

Found this question 但答案无效。

尝试

git diff --submodule[=diff/log/short] HEAD~ -- module-spec

git diff --submodule 到 运行 子模块差异。 [=diff/log/short] — 选择其中一种格式;默认为 short.

HEAD~ 到 运行 超级项目的前一次提交与当前提交之间的差异。

module-spec 仅限制子模块的差异。排除超级项目和其他子模块的差异。

您还可以使用 git ls-tree 获取在超级项目中注​​册的子模块的提交,并直接在子模块中 运行 git diff:

prev_commit=`git ls-tree HEAD~ module-spec | awk '{print }'`
curr_commit=`git ls-tree HEAD  module-spec | awk '{print }'`
cd module-spec
git diff --name-only $prev_commit $curr_commit