Git pre-commit hook: автоформатирование Python-кода Black + isort в 10 строк
Пошаговый пример pre-commit hook, который перед каждым git commit запускает Black и isort. Чистый стиль импорта и форматирования без лишних команд.
Hook сначала сортирует импорты в режиме совместимости с Black, затем запускает сам Black.
Если код изменился, commit прерывается — разработчик добавляет изменения и повторяет commit, что исключает «красные» CI-проверки.
# .git/hooks/pre-commit (chmod +x)
#!/usr/bin/env bash
echo "→ isort + black"
isort --profile=black .
black .
# Проверяем, есть ли незакоммиченные изменения после авто-форматеров
if ! git diff --quiet; then
echo "Файлы отформатированы — повторите git add и git commit"
exit 1
fi