是否有一个快捷方式来查看git子模块中的差异细节而不是提交哈希?

时间:2017-08-26 16:22:20

标签: git

如果创建一个带有git submodule add [remote URL]的git子模块并在子模块中提交,则父项目中的git diff显示类似

的内容
diff --git a/validation-tools b/validation-tools
index 78208b2..8941219 160000
--- a/validation-tools
+++ b/validation-tools
@@ -1 +1 @@
-Subproject commit 78208b2e64422a85509f0462b944ef8fbde93f48
+Subproject commit 8941219dd4935e97a585295ec34fb190e601b7ab

为了查看子模块中的不同,必须将cd放入其中,并将两个哈希值复制为git diffgit difftool的参数。我正在寻找一种避免复制的快捷方式(如果可能的话还有cd)。

我在Ubuntu 17.04上使用git 2.11.0。

1 个答案:

答案 0 :(得分:2)

您可以使用:

git diff --submodule=diff

但是,在您正在使用的Git版本(2.11)中,如果您的子模块中包含嵌套的子模块,则此命令将失败。 (Version 2.14.1 resolves this issue但是。)

如果出于某种原因,你无法升级你的Git并且你有嵌套的子模块,你可以尝试:

git submodule foreach --recursive git diff --name-status