「커밋 전에 black·linter·테스트를 돌려라」를 사람이 매번 기억할 순 없습니다.
pre-commit이 git hook으로 「커밋할 때 자동 실행」해 줍니다.
잘못된 코드는 커밋 자체가 거부.
기본 설정.
pip install pre-commit.
.pre-commit-config.yaml 작성.
예: repos: - repo: https://github.com/psf/black, rev: 23.0.0, hooks: - id: black.
pre-commit install로 git hook 등록.
이후 자동.
git commit 할 때마다 등록된 도구가 모두 실행 → 한 가지라도 실패하면 커밋 거부.
자동 수정 가능한 도구(black 등)는 파일을 자동 수정 → 다시 git add → 커밋.
흔한 hook들.
black·isort·ruff(포맷·lint), mypy(타입 검사), trailing-whitespace·end-of-file-fixer(공백 정리), check-yaml·check-json(파일 형식 검증), detect-private-key(비밀키 누출 방지).
CI와의 관계.
pre-commit이 첫 방어선, CI가 두 번째.
pre-commit ci 같은 봇으로 PR에서도 자동 실행 → 누군가가 install 안 해도 안전.
「로컬에서 잡히면 빠름, 안 잡혀도 CI에서 잡힘」 두 단계.
한 줄 요약
pre-commit은 git 커밋 전 자동 검사.
.pre-commit-config.yaml로 도구 등록, 잘못된 코드는 커밋 거부 + 자동 수정.
CI와 함께 두 단계 방어.
더 알아볼 것
- pre-commit 추천 hook 모음
- pre-commit ci — PR 자동 실행
- --no-verify로 우회(주의)