如何查看应用于父存储库的两个提交之间的子模块的提交?

时间:2016-04-08 13:00:39

标签: git git-submodules

我们说我有一个包含两个子模块的存储库:

Foo - sub1      - sub2

我希望通过某个提交看到提交应用于每个子模块。是否有捷径可寻?

如果我的问题不清楚,在我的用例中,sub1和sub2正在跟踪某个分支的历史记录,所以如果我要获得sub1的commit-hash for commit1 of Foo,并且hte foo的commit2的commit-hash,并在这些提交之间执行git log,我应该看到一些中间提交,显示在这些提交之间应用的所有更改。我喜欢所有子模块的信息。

1 个答案:

答案 0 :(得分:1)

git submodule summary命令将为您(大部分)提供您想要的内容。我将以ansible存储库为例,因为它有几个与之关联的子模块。

提取一些更新后:

$ git pull

我可以看到我的子模块现在已经过时了:

$ git status
On branch devel
Your branch is up-to-date with 'origin/devel'.
Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

  modified:   lib/ansible/modules/core (new commits)
  modified:   lib/ansible/modules/extras (new commits)

我可以使用git submodule summary命令来获取摘要 在当前签出的子模块版本和之间提交 存储库中的版本:

$ git submodule summary lib/ansible/modules/core
* lib/ansible/modules/core 2f46c35...f15000d (46):
  < fix win_user type checking
  < git still needs to have abspath applied to dest
  < Wrap calls to main() with if check
  < handles config replace properly in eos_template
  ...

这显示了每个提交的第一行;如果我想详细 信息,我可以使用第一行显示的提交范围 输出(2f46c35...f15000d):

$ git submodule update
$ cd lib/ansible/modules/core
$ git log 2f46c35...f15000d

我们首先更新子模块,使其达到当前提交, 然后使用提交范围在该存储库中运行git log 我们是git submodule summary给出的。