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

Git浅克隆fetch未获取匹配提交的问题排查

问题解答

核心原因:--shallow-since的筛选逻辑并非只看单个提交时间

你遇到的问题本质是git fetch --shallow-since和git log --since的筛选逻辑完全不同:

  • git log --since=<time>是直接筛选所有提交时间晚于指定时间的提交,不管该提交的父提交或历史链的时间,所以能匹配到你的目标提交。
  • git fetch --shallow-since=<time>则是保留所有提交时间晚于指定时间的提交,且这些提交的整个可达历史链中,不存在早于指定时间的提交节点——Git会截断所有早于指定时间的历史节点,若目标提交依赖的父提交被截断,那么目标提交也无法被完整获取,因此不会被纳入浅克隆范围。

你的目标提交时间仅比指定时间晚1秒,但它的父提交(或某个上游历史提交)的时间必然早于2022-08-16T13:12:18Z,这才导致了fetch失败。而当你使用提前一天的时间戳时,目标提交的整个历史链所有节点时间都晚于该时间,因此Git可以完整获取目标提交及其依赖的历史。

关于--shallow-since是否是“宽松建议”

--shallow-since是严格的筛选规则,并非宽松建议。它的核心是构建一个“所有可达提交时间都晚于指定时间”的浅仓库,而非简单包含单个时间符合的提交。如果提交的历史链中存在早于指定时间的节点,该提交会被排除在浅克隆之外。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 17:15:39