Git历史包括/ interleave子模块提交

时间:2012-01-12 23:11:01

标签: git git-submodules

我想为存储库和所有子模块获取git log。该联机帮助页说应该使用git log --submodule,但这对我不起作用。

-------编辑-------

举个例子 - 我跑的是什么:

git clone git://git.typo3.org/TYPO3v4/Core.git
cd Core
git submodule init && git submodule update
git log --submodule 

git log --submodule的输出不包括任何子模块的提交 - 只是子模块指针已被更改的提交。

缺少什么?

1 个答案:

答案 0 :(得分:6)

听起来好像你期望--submodule将子模块提交与来自git log输出中的父存储库的提交交错,但不幸的是,这不是它的作用。

--submodule参数定义了子模块差异的显示方式 - 所以如果你使用的话,你只会看到它的影响。 git log -p显示每次更改的补丁。通常,git log -p将仅显示补丁中子模块更改的前后提交的哈希值:

$ git log -1 -p
commit 111808a2bb8c9683d3abe68df419759848ddb16e
Author: Simon Whitaker <simon@...>
Date:   Fri Jan 13 10:40:41 2012 +0000

    Updated ObjectiveFlickr ref

diff --git a/submodules/ObjectiveFlickr b/submodules/ObjectiveFlickr
index b37c053..1bede67 160000
--- a/submodules/ObjectiveFlickr
+++ b/submodules/ObjectiveFlickr
@@ -1 +1 @@
-Subproject commit b37c0539a536147957c01ad01cf2d8666bcbde9e
+Subproject commit 1bede67b8258ed4b95b5d3d6c2175b5e64912269

使用--submodule,您可以从列出的子模块中获取实际的提交消息:

$ git log -1 -p --submodule
commit 111808a2bb8c9683d3abe68df419759848ddb16e
Author: Simon Whitaker <simon@...>
Date:   Fri Jan 13 10:40:41 2012 +0000

    Updated ObjectiveFlickr ref

Submodule submodules/ObjectiveFlickr b37c053..1bede67:
  > Set SKIP_INSTALL to YES so that Product > Archive 
  still builds app rather than Xcode archive