我想获取所有文件的列表,这些文件在两次提交之间发生了更改,包括子模块中的文件。
我知道我可以做到:
git diff --name-only --diff-filter=ACMR ${revision} HEAD
它返回一个文件列表,包括子模块路径,但不包括其中的文件。
例子: 我更新了一个子模块。我提交了 super 项目。现在我想获取所有已修改文件的列表。
您知道完成这项工作的方法吗?
最佳答案
2017 年更新:正如我在“see diff of commit on submodule in gitlab”中提到的,
Git 2.11(2016 年 11 月)介绍
git diff --submodule=diff
Git 2.14(2017 年第 3 季度)将通过递归到嵌套子模块来改进这一点。
参见 commit 5a52214 (2017 年 5 月 4 日)Stefan Beller (stefanbeller
) .
(由 Junio C Hamano --gitster
-- merge 于 commit a531ecf ,2017 年 5 月 29 日)
2012 年原始答案(2017 年 Git 2.14 之前)
也许简单的一行就足够了:
git submodule foreach --recursive git diff --name-status
这实际上会列出子模块内子模块中的文件。
(--recursive
选项来自git1.7.3+)
关于git:所有更改文件的列表,包括子模块中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10757091/