You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Git主仓库执行git log时显示提交中修改的子模块?

如何在Git主仓库的git log中查看子模块的修改

当然可以显示!你之前可能是对--submodule选项的用法或者和--pretty的组合方式没摸透,我来给你拆解正确的操作方式:

1. 最直接的子模块变更摘要

如果你只想快速看到每次主仓库提交里涉及的子模块变更(比如子模块从哪个提交哈希切换到了哪个),直接用:

git log --submodule

这个命令会在每个提交的详细信息下方,追加一段Submodule changes的小节,列出所有被修改的子模块路径、新旧哈希差异,以及变更的提交数量。

2. 查看子模块的详细提交日志

如果想要更深入,连子模块内部的提交信息也一并显示在主仓库的日志里,用--submodule=log参数:

git log --submodule=log

它会在主仓库提交信息下面,嵌套展示对应子模块中发生的具体提交(包括提交哈希、作者、提交信息),相当于把主仓库和子模块的日志关联起来看。

3. 结合自定义--pretty格式显示子模块信息

如果你想用自定义的日志格式(比如只显示提交哈希、标题和子模块变更),需要在--pretty的格式字符串中加入子模块相关的占位符:

  • %gs:子模块变更的摘要信息
  • %gH:子模块更新后的目标提交哈希
  • %gD:子模块更新后的目标引用(比如分支名)

举个例子,自定义格式可以这么写:

git log --pretty=format:"%h | %s | 子模块变更:%gs"

这样每条日志行都会直接显示子模块的变更摘要,不用额外展开。

可能你之前踩的坑

  • 如果你用了自定义--pretty格式但没加子模块占位符,--submodule的效果不会自动体现,因为自定义格式会覆盖默认的日志输出结构,必须主动加入子模块相关字段。
  • 注意--submodule的可选取值只有short、log、summary三种,要是用了其他无效值,自然不会生效。

可选:设置默认显示子模块日志

如果不想每次都敲--submodule,可以把它设为默认配置:

git config log.submodule log

之后直接执行git log就会自动包含子模块的详细日志了。

内容的提问来源于stack exchange,提问作者romaric crailox

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 06:36:55