Git pre-commit hooks 继续修改文件,即使我暂存了之前修改过的文件
Git pre-commit hooks keeps modifying files even after I have staged previously modified files
我运行宁gitpre-commit和运行宁黑作为钩子之一
现在当我 运行 commit
时,黑色失败并说:
All done! ✨ ✨
15 files reformatted, 1 file left unchanged.
我查看了重新格式化的文件,对它们没有意见。所以我暂存这些文件并再次尝试 运行ning commit
,但我不断收到与上面相同的消息。我尝试了以下命令但没有成功。
git add .
git add -A
git add -u
这是我的 .pre-commit-config.yaml
文件:
repos:
- repo: https://github.com/psf/black
rev: 19.10b0
hooks:
- id: black
language_version: python3.6
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: check-merge-conflict
- id: check-docstring-first
- id: check-json
- id: check-yaml
- id: debug-statements
- id: double-quote-string-fixer
- id: end-of-file-fixer
- id: name-tests-test
args: [--django]
- id: requirements-txt-fixer
- id: trailing-whitespace
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.9
hooks:
- id: flake8
additional_dependencies: [flake8-typing-imports==1.6.0]
- repo: https://github.com/asottile/reorder_python_imports
rev: v1.4.0
hooks:
- id: reorder-python-imports
args: [--py3-plus]
- repo: https://github.com/Lucas-C/pre-commit-hooks-bandit
rev: v1.0.4
hooks:
- id: python-bandit-vulnerability-check
args: [-l, --recursive, -x, tests]
files: .py$
- repo: local
hooks:
- id: tests
name: run tests
entry: venv/bin/pytest -v -m fast
language: python
additional_dependencies: [pre-commit, pytest]
always_run: true
pass_filenames: false
types: [python]
stages: [commit]
- repo: local
hooks:
- id: tests
name: run tests
entry: venv/bin/pytest -x
language: system
types: [python]
stages: [push]
当我执行 git status --short 时,我得到这个:
M .pre-commit-config.yaml
M pytest.ini
M setup.cfg
RM tests/tests_report.html -> tests/commit_pytest_report.html
R report.html -> tests/commit_tests_report.html
AM tests/coverage/index.html
A tests/coverage/file_1.png
当我运行git commit -m "test"
,运行宁git add .
后,git add -A
,或git add -u
;我明白了:
black....................................................................Failed
- hook id: black
- files were modified by this hook
reformatted <filename>
...
All done! ✨ ✨
15 files reformatted, 1 file left unchanged.
Check for merge conflicts................................................Passed
Check docstring is first.................................................Passed
Check JSON...............................................................Passed
Check Yaml...............................................................Passed
Debug Statements (Python)................................................Passed
Fix double quoted strings................................................Failed
- hook id: double-quote-string-fixer
- exit code: 1
- files were modified by this hook
Fixing strings in <file_name>
...
Fix End of Files.........................................................Failed
- hook id: end-of-file-fixer
- exit code: 1
- files were modified by this hook
Fixing <file_name>
...
Tests should end in _test.py.............................................Passed
Fix requirements.txt.................................(no files to check)Skipped
Trim Trailing Whitespace.................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1
<file_name>: <some flake8 error>
...
Reorder python imports...................................................Passed
bandit...................................................................Passed
run tests................................................................Failed
- hook id: tests
- files were modified by this hook
============================= test session starts ==============================
platform darwin -- Python 3.6.9, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
<test details>
(0.00 durations hidden. Use -vv to show these durations.)
====================== 2 passed, 113 deselected in 2.51s =======================
我不确定自己做错了什么; git 似乎没有用黑色格式更新我的提交。我无法通过 Google 研究找到任何东西。谢谢!
您似乎在同时使用 black
和 double-quote-strings-fixer
- 前者喜欢python中的双引号字符串(可以通过在
pyproject.toml
中配置黑色为skip-string-normalization
来禁用)
- 后者喜欢python中的单引号字符串(喜欢双引号的可以去掉)
如果两个格式化程序发生冲突,最终结果将是失败,因为提交前检查以确保一切都已解决
免责声明:我是预提交和预提交挂钩的作者
我运行宁gitpre-commit和运行宁黑作为钩子之一
现在当我 运行 commit
时,黑色失败并说:
All done! ✨ ✨
15 files reformatted, 1 file left unchanged.
我查看了重新格式化的文件,对它们没有意见。所以我暂存这些文件并再次尝试 运行ning commit
,但我不断收到与上面相同的消息。我尝试了以下命令但没有成功。
git add .
git add -A
git add -u
这是我的 .pre-commit-config.yaml
文件:
repos:
- repo: https://github.com/psf/black
rev: 19.10b0
hooks:
- id: black
language_version: python3.6
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v2.5.0
hooks:
- id: check-merge-conflict
- id: check-docstring-first
- id: check-json
- id: check-yaml
- id: debug-statements
- id: double-quote-string-fixer
- id: end-of-file-fixer
- id: name-tests-test
args: [--django]
- id: requirements-txt-fixer
- id: trailing-whitespace
- repo: https://gitlab.com/pycqa/flake8
rev: 3.7.9
hooks:
- id: flake8
additional_dependencies: [flake8-typing-imports==1.6.0]
- repo: https://github.com/asottile/reorder_python_imports
rev: v1.4.0
hooks:
- id: reorder-python-imports
args: [--py3-plus]
- repo: https://github.com/Lucas-C/pre-commit-hooks-bandit
rev: v1.0.4
hooks:
- id: python-bandit-vulnerability-check
args: [-l, --recursive, -x, tests]
files: .py$
- repo: local
hooks:
- id: tests
name: run tests
entry: venv/bin/pytest -v -m fast
language: python
additional_dependencies: [pre-commit, pytest]
always_run: true
pass_filenames: false
types: [python]
stages: [commit]
- repo: local
hooks:
- id: tests
name: run tests
entry: venv/bin/pytest -x
language: system
types: [python]
stages: [push]
当我执行 git status --short 时,我得到这个:
M .pre-commit-config.yaml
M pytest.ini
M setup.cfg
RM tests/tests_report.html -> tests/commit_pytest_report.html
R report.html -> tests/commit_tests_report.html
AM tests/coverage/index.html
A tests/coverage/file_1.png
当我运行git commit -m "test"
,运行宁git add .
后,git add -A
,或git add -u
;我明白了:
black....................................................................Failed
- hook id: black
- files were modified by this hook
reformatted <filename>
...
All done! ✨ ✨
15 files reformatted, 1 file left unchanged.
Check for merge conflicts................................................Passed
Check docstring is first.................................................Passed
Check JSON...............................................................Passed
Check Yaml...............................................................Passed
Debug Statements (Python)................................................Passed
Fix double quoted strings................................................Failed
- hook id: double-quote-string-fixer
- exit code: 1
- files were modified by this hook
Fixing strings in <file_name>
...
Fix End of Files.........................................................Failed
- hook id: end-of-file-fixer
- exit code: 1
- files were modified by this hook
Fixing <file_name>
...
Tests should end in _test.py.............................................Passed
Fix requirements.txt.................................(no files to check)Skipped
Trim Trailing Whitespace.................................................Passed
flake8...................................................................Failed
- hook id: flake8
- exit code: 1
<file_name>: <some flake8 error>
...
Reorder python imports...................................................Passed
bandit...................................................................Passed
run tests................................................................Failed
- hook id: tests
- files were modified by this hook
============================= test session starts ==============================
platform darwin -- Python 3.6.9, pytest-5.4.1, py-1.8.1, pluggy-0.13.1
<test details>
(0.00 durations hidden. Use -vv to show these durations.)
====================== 2 passed, 113 deselected in 2.51s =======================
我不确定自己做错了什么; git 似乎没有用黑色格式更新我的提交。我无法通过 Google 研究找到任何东西。谢谢!
您似乎在同时使用 black
和 double-quote-strings-fixer
- 前者喜欢python中的双引号字符串(可以通过在
pyproject.toml
中配置黑色为skip-string-normalization
来禁用) - 后者喜欢python中的单引号字符串(喜欢双引号的可以去掉)
如果两个格式化程序发生冲突,最终结果将是失败,因为提交前检查以确保一切都已解决
免责声明:我是预提交和预提交挂钩的作者