如何获取特定 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
父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