【问题标题】:What's the Git command to determine which commit changed a submodule pointer?确定哪个提交更改了子模块指针的 Git 命令是什么?
【发布时间】:2016-09-01 01:15:32
【问题描述】:

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

提示简单的图表:

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

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

【问题讨论】:

  • 这不只是 git 搜索匹配+Subproject commit SHA 的字符串吗?

标签: git commit git-submodules


【解决方案1】:

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

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

产量:

commit xyz123456
Author:
Date:

    Message

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

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

【讨论】:

    【解决方案2】:

    你也可以使用

    git log -p -- path/to/submodule
    

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

    【讨论】:

      猜你喜欢
      • 2014-01-06
      • 2022-11-16
      • 2021-10-15
      • 1970-01-01
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      相关资源
      最近更新 更多