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

如何仅获取Git子模块指定日期后的历史,shallow-since与depth能否转换

问题1:实现拉取SUBMODULE_2 2021-01-01之后的提交历史

你使用的Git 2.33.1版本完全支持子模块的--shallow-since参数,有两种可行方案:

  • 方案1:直接在update命令中指定参数
    直接执行以下命令即可:
git submodule update --init --shallow-since=2021-01-01 SUBMODULE_2

如果上述命令不生效,可以通过--将参数透传给底层的git clone逻辑:

git submodule update --init SUBMODULE_2 -- --shallow-since=2021-01-01
  • 方案2:先配置子模块拉取规则再执行更新
    如果需要长期对该子模块生效该规则,可以先配置再拉取:
# 初始化子模块配置
git submodule init SUBMODULE_2
# 配置该子模块的拉取规则
git config submodule.SUBMODULE_2.fetchOpts --shallow-since=2021-01-01
# 执行更新拉取
git submodule update SUBMODULE_2
问题2:--shallow-since和--depth的等效转换关系

两者没有固定的等效转换方式,本质逻辑完全不同:

  • --depth是按提交数量截断,从当前拉取的分支HEAD往回数N个提交,只保留这N个提交的历史
  • --shallow-since是按日期截断,只保留指定日期之后产生的所有提交历史
    指定日期之后的提交数量完全取决于对应仓库的开发频率,不同仓库、同一仓库的不同分支、不同时间点的数值都不一样。
    如果需要临时获得近似的depth数值,可以在完整拉取该子模块后执行以下命令统计提交数,统计结果仅对当前分支当前时间点有效:
git rev-list --count HEAD --since="2021-01-01"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:36:03