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

Git无法提交推送代码求助:执行commit后界面无响应

Git提交时界面无响应问题排查与修复

问题定位

从你的配置来看,提交无响应的核心原因是husky触发的lint-staged钩子卡住。具体来说,你的.lintstagedrc中配置了对测试文件执行npm run test:ci,该命令可能因测试用例问题或配置不当导致无限等待,进而阻塞整个提交流程。

解决方案

1. 临时绕过钩子验证,确认问题根源

执行以下命令直接提交,若能成功则证明是钩子脚本的问题:

git commit -m "init commit" --no-verify

2. 定位卡住的具体脚本

手动执行lint-staged中的命令,排查哪一步阻塞:

  • 执行ESLint检查,确认是否正常结束:
    npm run eslint
    
  • 执行CI模式测试,观察是否卡住:
    npm run test:ci
    
    若test:ci卡住,说明测试流程存在问题(如测试用例无限循环、异步操作未收尾、依赖服务未启动等)。

3. 调整lint-staged配置

方案A:临时移除测试钩子(优先验证)

修改.lintstagedrc,暂时去掉测试相关的检查,先确保提交流程正常:

{
    "*.{ts,tsx}": "npm run eslint"
}

方案B:优化测试钩子(推荐长期方案)

不要在提交时跑全量测试,改为只检测改动文件关联的测试用例,提升速度并避免阻塞:

{
    "*.{ts,tsx}": "npm run eslint",
    "*.test.{ts,tsx}": ["npm run test:ci -- --findRelatedTests"]
}

4. 重新校验husky钩子安装

执行以下命令重新初始化husky,确保钩子文件正确生成:

npm run prepare

检查项目根目录下的.git/hooks/pre-commit文件,确认其内容包含调用lint-staged的逻辑。

5. 排查测试用例问题

如果npm run test:ci确实卡住,需要逐一检查测试用例:

  • 检查是否存在无限循环的逻辑
  • 确认异步测试是否正确使用done()回调或async/await
  • 排查测试依赖的外部服务是否正常启动(如Mock服务、数据库等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 11:05:23