预提交使用 cli 正确修复文件,但当我尝试提交文件时将其更改回来

cam*_*mil 5 python git pre-commit isort pre-commit.com

我正在尝试使用 isort 自动修复导入订单。当我pre-commit run --files=myfile.py正确运行时,它会更新我的导入(通过在已知的第三方导入和内部包导入之间添加一行)。但是,当我尝试提交此操作时,预提交将导致提交失败,然后删除第三方导入和内部包之间的行。

我尝试known_third_partysetup.cfg和 in中设置设置.isort.cfg,并且得到相同的行为。但是,我怀疑配置本身不是问题,因为当我运行时它显然被正确识别pre-commit run ...。那么为什么pre-commit run使用了正确的配置,但在实际提交时,似乎忽略了它呢?

如何让挂钩尊重实际提交的配置?

配置是: .pre-commit-config.yaml

repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
  rev: v3.2.0
  hooks:
    - id: trailing-whitespace
    - id: end-of-file-fixer
    - id: check-yaml
    - id: check-added-large-files
- repo: https://github.com/psf/black
  rev: 21.12b0
  hooks:
    - id: black
- repo: https://github.com/pycqa/isort
  rev: 5.10.1
  hooks:
    - id: isort
      name: isort (python)
Run Code Online (Sandbox Code Playgroud)

.isort.cfg

[settings]
known_third_party=django
Run Code Online (Sandbox Code Playgroud)

附加信息:子目录配置可能导致此行为

我尝试过移动配置文件,现在问题似乎已经解决。我的存储库包含多个应用程序的源代码,其中之一是 python django 应用程序。配置文件位于该子目录中。我已将配置文件移至整个项目的根目录,现在这个特定问题已解决。我想知道是否有一种方法可以进行预提交或排序来识别子目录中的配置,但我将把它留给另一个问题。