Windows Git Bash与Ubuntu Git的Fetch行为差异求助
Git 2.44.0在Windows Git Bash与Ubuntu环境下Fetch行为差异的排查思路
问题现象
从Bitbucket拉取代码时,使用相同版本(2.44.0)的Git,Windows Git Bash与Ubuntu环境下执行相同fetch命令的行为存在显著差异:
Windows端执行命令及输出
每次fetch后仓库包大小无增长:
$ git fetch --tags --force --progress --depth=1 -- ssh://git@domain:7999/mob/solution.git +refs/heads/*:refs/remotes/origin/* remote: Enumerating objects: 587, done. remote: Counting objects: 100% (247/247), done. remote: Compressing objects: 100% (42/42), done. remote: Total 67 (delta 26), reused 36 (delta 3), pack-reused 0 Unpacking objects: 100% (67/67), 10.38 KiB | 379.00 KiB/s, done.
Ubuntu端执行命令及输出
每次fetch后仓库包大小持续增长:
$ git fetch --tags --force --progress --depth=1 -- ssh://git@domain:7999/mob/solution.git +refs/heads/*:refs/remotes/origin/* remote: Enumerating objects: 364276, done. remote: Counting objects: 100% (263794/263794), done. remote: Compressing objects: 100% (86510/86510), done. remote: Total 225273 (delta 170121), reused 168580 (delta 124035), pack-reused 0 Receiving objects: 100% (225273/225273), 1.69 GiB | 26.58 MiB/s, done. Resolving deltas: 100% (170121/170121), completed with 12471 local objects.
已尝试更换不同Git版本,问题仍未解决,以下是具体排查思路:
- 对比两端Git核心配置差异:分别执行
git config --list,重点检查fetch.unpackLimit、core.compression、transfer.fsckObjects、fetch.prune这些参数,确认是否因配置不同导致fetch行为差异。比如fetch.unpackLimit设置过低可能限制解压对象数量;未开启fetch.prune可能导致本地保留已删除的远程分支引用,重复拉取无关对象。 - 检查本地远程引用状态:在两端分别执行
git remote show origin,对比远程分支的跟踪状态、HEAD指向是否一致;再执行git rev-parse origin/[目标分支名],确认两端本地存储的远程分支commit hash是否相同。如果Ubuntu端的远程分支引用未正确更新,可能导致每次fetch都重新拉取全量对象。 - 验证标签拉取的影响:去掉命令中的
--tags参数,分别在两端执行fetch,观察差异是否消失。如果Ubuntu端不再拉取大量对象,说明问题源于标签拉取逻辑的差异——可能Windows端已缓存所有标签,而Ubuntu端每次都重新拉取全量标签。 - 检查仓库浅克隆状态:分别在两端执行
git log --oneline --graph --decorate,确认本地是否仅保留最新的commit节点。如果Ubuntu端本地存在历史commit,可能是之前的非浅克隆操作导致后续fetch行为异常。 - 对比客户端请求差异:使用
GIT_TRACE=1 git fetch [命令参数]在两端开启Git跟踪日志,查看发送给Bitbucket的请求细节(如请求头、refspec解析结果),确认是否因客户端请求不同导致服务器返回的对象集差异。 - 测试单个分支拉取:在两端使用
git fetch --depth=1 origin main(替换为实际分支名)直接拉取单个分支,排除refspec通配符+refs/heads/*:refs/remotes/origin/*的解析问题。
内容的提问来源于stack exchange,提问作者JumpingKangaroo
相关产品推荐
相关产品推荐

