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

Windows10下GitBash执行commit卡顿约5分钟,此现象是否正常?

关于Git Commit卡顿5分钟的问题排查与解决

环境信息

  • GitBash版本:2.36.1
  • Mintty版本:3.6.1 (x86_64-pc-msys)
  • 系统:Windows 19044

卡顿现象

执行以下命令时,git commit在完成对象处理后卡顿约5分钟:

<user> <path> (master)
$ git add .

<user> <path> (master)
$ git commit -m "..."
Auto packing the repository in background for optimum performance.
See "git help gc" for manual housekeeping.
Enumerating objects: 384, done.
Counting objects: 100% (17/17), done.
Delta compression using up to 4 threads
Compressing objects: 100% (16/16), done.
Writing objects: 100% (17/17), done.
Total 17 (delta 4), reused 0 (delta 0), pack-reused 0
Removing duplicate objects: 100% (256/256), done.

卡顿发生在上述最后一行输出之后,此前从未出现该情况。

.git钩子情况

钩子目录下仅存在示例文件(无自定义钩子脚本):
.git文件夹钩子

Trace2日志分析

提供的git commit Trace2日志显示:

  • 核心commit流程的所有步骤(读取索引、刷新索引、解包树、diff处理、状态检查)均在0.3秒内完成,且进程退出码为1
  • 后续启动的rev-parse和config子命令也快速执行完毕,耗时均在0.1秒内

日志异常点:

  1. 主commit进程提前退出(退出码1),但终端仍显示卡顿,说明卡顿并非来自Git核心命令本身
  2. 日志未记录到Removing duplicate objects之后的操作,推测卡顿发生在Git后台自动执行的git gc进程中

问题判断与修复方案

是否正常?

这种卡顿不正常,正常情况下git gc自动后台执行不会出现如此长时间的阻塞。

问题根源

  1. 后台gc进程阻塞:Git在commit后自动触发后台gc,可能因磁盘IO性能差、仓库存在大量松散对象或重复对象清理时出现资源占用过高
  2. 终端输出阻塞:Mintty终端可能在处理Git输出时出现异常,导致看似卡顿
  3. 无自定义钩子影响:钩子目录仅存示例文件,排除钩子脚本导致的卡顿

修复步骤

  • 手动执行gc:先手动运行git gc --prune=now完成仓库清理,避免后台gc自动触发时卡顿
  • 关闭自动后台gc:执行git config --global gc.auto 0禁用commit后的自动后台gc,后续按需手动执行git gc
  • 检查磁盘状态:确认仓库所在磁盘是否存在IO瓶颈、磁盘空间不足或文件系统错误,必要时清理磁盘或检查磁盘健康
  • 升级Git版本:当前使用的2.36.1版本较旧,升级到最新稳定版可修复已知的性能问题和bug

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 23:45:55