修改Git仓库内zip文件时执行add、commit操作卡住无响应是什么原因?
故障原因及排查方案
核心原因
- 杀毒软件实时扫描拦截:Windows Defender或第三方杀毒软件默认会对新写入的压缩包类文件做安全扫描,Git执行add/commit时,会先将zip文件写入.git目录下的object存储区,此时杀毒软件会锁文件进行扫描,Git进程等待扫描结果返回时陷入卡顿,但核心的文件写入逻辑已经执行完成,因此终止进程后操作仍然生效。这是Windows环境下该类问题最常见的诱因。
- Git二进制文件处理配置异常:Git默认会对可识别的文件尝试做增量delta压缩,部分场景下会对zip文件触发解压对比逻辑,如果Git配置了自定义的zip文件diff/filter驱动,驱动在Git Bash环境下运行异常卡住,也会导致Git进程无响应。
- Git Bash伪终端兼容问题:通过bash脚本调用Git时,Git检测到运行终端为Git Bash的伪终端,针对二进制文件的交互提示(如二进制文件识别确认)未正常渲染到前台,Git卡在后台等待用户输入,核心操作逻辑已经执行完成,终止进程后可看到操作结果。
排查验证方法
- 临时关闭杀毒软件实时保护,执行
git add/git commit操作,若恢复正常,将项目的.git目录加入杀毒软件的排除扫描列表即可。 - 在项目根目录添加
.gitattributes文件,写入*.zip binary,强制Git将zip文件识别为纯二进制文件,不做额外的格式转换、内容对比处理,排除配置类问题。 - 直接在CMD/PowerShell环境下执行Git命令,而非通过Git Bash脚本调用,若不再卡顿,可以在脚本调用Git时添加
--no-pager参数,避免伪终端交互等待。
内容的提问来源于stack exchange,提问作者Darren Oakey
相关产品推荐
相关产品推荐

