..
Git Hook: 저장소의 이벤트를 낚아채는 스크립트
Git Hook이란?
Git Hook은 커밋(Commit), 푸시(Push), 머지(Merge) 등 Git 저장소에서 특정 이벤트가 발생하기 전/후에 자동으로 실행되는 스크립트입니다.
파일 위치 (Hooks Directory)
모든 Git 저장소의 .git/hooks 디렉토리 안에 존재합니다.
# 프로젝트 루트 폴더 기준
${projectRoot}/.git/hooks
사용자가 원하는 언어(Shell, Python 등)로 스크립트를 작성하여 이 위치에 넣어두면, 깃이 해당하는 이벤트 타이밍에 이 파일들을 자동으로 수행합니다.
주요 훅의 종류
1. 클라이언트 사이드 훅 (Client-side Hooks)
작업자의 로컬 PC에서 발생하는 이벤트에 반응합니다.
- pre-commit: 커밋이 만들어지기 직전에 실행됩니다. (주로 코드 포맷팅 검사, 린트 등에 사용)
- post-merge: 머지가 완료된 후 실행됩니다. (주로 빌드 결과물 갱신 등에 사용)
2. 서버 사이드 훅 (Server-side Hooks)
원격 저장소(Remote Repo)로 트래픽이 인입될 때 반응합니다.
- pre-receive: 푸시를 서버에서 최종적으로 승인하기 직전에 실행됩니다. (프로젝트 규칙 준수 여부 강제 등에 사용)
- post-receive: 푸시가 완전히 완료된 후 실행됩니다. (CI/CD 트리거, 알림 발송 등에 사용)
활용 목적: “자동화 필터”
Git Hook의 주 사용 목적은 개발 워크플로우를 자동화하고 표준을 강제하는 데 있습니다.
- 코드 품질 관리: 커밋 전 테스트 코드를 돌리거나 린트를 강제합니다.
- 배포 자동화: 서버에 코드가 들어오는 순간 자동으로 배포 프로세스를 시작합니다.
- 메시지 규칙 준수: 커밋 메시지 형식이 맞는지 자동으로 검사합니다.
Git Hook은 깃의 주요 길목에 서서 사전에 약속된 동작을 수행하는 “커스텀 자동화 요원”입니다.