什么是Git命令来确定哪个提交更改了子模块指针?

时间:2016-05-06 04:37:38

标签: git commit git-submodules

我正在解析对git仓库进行的一系列更改,其中一些更改涉及子模块。我使用git blame来查找子模块中的相关提交,但有一种简单的方法可以找到我的主仓库中的哪个提交更改了该提交的子模块指针?

提示简单图:

1 <- 2 <- 3 <- 4 <- 5    (Main chain of commits)
|    |    |    |    |
1    1    1    2    2    (Submodule)

我找到了子模块#1变为子模块#2的提交(比如它的9d95812e ......)。如何确定main-commit#4是否首次使用新子模块提交的事实?

2 个答案:

答案 0 :(得分:4)

据我所知,这是不太可能的,你可以得到的最接近的是确定哪些提交添加或删除了特定的子模块指针:

git log -p -S "Subproject commit c4965b1..."

的产率:

commit xyz123456
Author:
Date:

    Message

diff...
@@ -1 +1 @@
-Subproject commit 901231290321
+Subproject commit 1902u8129039

唯一的问题是+/-不是您要搜索的实际字符串的一部分,因此您无法专门查找添加或删除,但使用-p标记会让您很容易看到这一点。

答案 1 :(得分:1)

您也可以使用

git log -p -- path/to/submodule

如果要查看其随时间的变化,请查看所有更新了子模块指针的提交。