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