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

本地pre-commit与GitHub pre-commit.ci执行结果不一致求助

本地pre-commit与pre-commit.ci执行结果不一致(isort检查不匹配)

本地执行git commit -m "pre-commit run --all-files"后,所有检查项(包括isort)均通过,执行输出如下:

% git commit -m "pre-commit run --all-files"
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to /home/econdami/.cache/pre-commit/patch1678211848-117234.
check for added large files..............................................Passed
check python ast.........................................................Passed
check for case conflicts.................................................Passed
check docstring is first.................................................Passed
check json...........................................(no files to check)Skipped
check for merge conflicts................................................Passed
check toml...........................................(no files to check)Skipped
check xml............................................(no files to check)Skipped
check yaml...........................................(no files to check)Skipped
debug statements (python)................................................Passed
fix end of files.........................................................Passed
fix python encoding pragma...............................................Passed
python tests naming..................................(no files to check)Skipped
trim trailing whitespace.................................................Passed
black....................................................................Passed
isort (python)...........................................................Passed
interrogate..............................................................Passed
flake8 under python3.....................................................Passed
[INFO] Restored changes from /home/econdami/.cache/pre-commit/patch1678211848-117234.
[master ec627fd2] pre-commit run --all-files
 1 file changed, 1 insertion(+), 2 deletions(-)

但执行git push后,pre-commit.ci上isort检查出现问题,已查阅pre-commit.ci配置文档但未找到问题根源,请求排查。

排查方向

  • isort版本不一致:本地和pre-commit.ci使用的isort版本可能存在差异,导致规则解析结果不同。可在本地运行isort --version查看版本,对比pre-commit.ci日志中的isort版本;建议在.pre-commit-config.yaml中固定isort的具体版本,比如指定rev: 5.12.0。
  • 配置文件加载差异:确认本地与CI环境是否加载了相同的isort配置(如.isort.cfg、pyproject.toml中的[tool.isort]段)。本地可能存在全局配置(如~/.isort.cfg)覆盖仓库配置,而pre-commit.ci仅读取仓库根目录的配置。可通过本地执行isort --show-config查看生效配置,再对比CI环境的配置情况。
  • Python版本差异:isort的行为可能受Python版本影响,检查本地Python版本与pre-commit.ci使用的Python版本是否一致。可在.pre-commit-config.yaml的isort钩子中添加language_version: python3.x指定版本,确保环境一致。
  • 文件状态差异:确认本地提交后push的代码与本地检查时的代码是否完全一致。可通过git diff HEAD^ HEAD查看提交内容,对比CI中检查的文件内容是否存在差异。
  • pre-commit缓存问题:本地pre-commit可能依赖缓存未重新检查文件,执行pre-commit clean清除缓存后,再运行pre-commit run --all-files,看结果是否与CI一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 09:43:27