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

Mat*_* Mc 6 git commit git-submodules

我正在解析对git repo进行的一系列更改,其中一些更改涉及子模块.我曾经git blame在子模块中找到相关的提交,但是有一种简单的方法来定位我的主仓库中的哪个提交改变了该提交的子模块指针?

提示简单图:

1 <- 2 <- 3 <- 4 <- 5    (Main chain of commits)
|    |    |    |    |
1    1    1    2    2    (Submodule)
Run Code Online (Sandbox Code Playgroud)

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

cb2*_*cb2 6

您还可以使用

git log -p -- path/to/submodule
Run Code Online (Sandbox Code Playgroud)

如果您想查看子模块指针随时间的变化情况,请查看所有已更新子模块指针的提交。


Mat*_* Mc 5

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

git log -p -S "Subproject commit c4965b1..."
Run Code Online (Sandbox Code Playgroud)

产量:

commit xyz123456
Author:
Date:

    Message

diff...
@@ -1 +1 @@
-Subproject commit 901231290321
+Subproject commit 1902u8129039
Run Code Online (Sandbox Code Playgroud)

唯一的事情是它们+/-不是您正在搜索的实际字符串的一部分,因此您无法专门查找添加或删除,但使用该-p标志可以让您轻松看到这一点。