..

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은 깃의 주요 길목에 서서 사전에 약속된 동작을 수행하는 “커스텀 자동화 요원”입니다.