본문 바로가기
git & github

git hook 정리

by spare8433 2025. 1. 3.

설명

Git Hook은 특정 Git 이벤트가 발생했을 때 자동으로 실행되는 스크립트를 말하며 기본적으로 쉘 스크립트로 실행됩니다.



클라이언트 측 Hook

개발자의 로컬 저장소에서 실행됩니다. 주로 commit, merge, push 와 같은 작업 이전에 코드를 검증하거나 자동화 작업을 수행하는 데 사용됩니다.


  • pre-commit: 커밋 전에 실행, 코드 검증 및 테스트 수행.
  • prepare-commit-msg: 커밋 메시지 작성 전 기본 메시지를 수정.
  • commit-msg: 커밋 메시지가 작성된 후, 메시지 검증.
  • post-commit: 커밋 후 실행, 알림 전송이나 로그 작성.
  • pre-merge-commit: 병합 커밋 생성 전에 실행.
  • pre-push: 푸시 전에 실행, 테스트나 검증 수행.
  • post-checkout: 브랜치 변경이나 파일 체크아웃 후 실행.
  • post-merge: 병합 후 실행, 의존성 업데이트나 알림 전송.
  • post-rewrite: 커밋 수정이나 git rebase 후 실행.
  • applypatch-msg: git apply로 패치를 적용할 때 커밋 메시지를 수정하기 전 실행.
  • pre-applypatch: 패치가 적용되기 전에 실행.
  • post-applypatch: 패치가 적용된 후 실행.



서버 측 Hooks

원격 저장소에서 실행됩니다. 주로 푸시된 코드를 검증하거나 작업 규칙을 강제하는 데 사용됩니다.


  • pre-receive: 원격 저장소로 푸시 전에 실행, 푸시 검증.
  • update: 각 브랜치별로 푸시를 검증.
  • post-receive: 푸시 후 실행, CI/CD 트리거.
  • post-update: 서버 측에서 리포지토리 업데이트 후 실행.
  • reference-transaction: 참조 업데이트 중 트랜잭션 이벤트 처리.
  • push-to-checkout: 푸시된 내용을 워킹 디렉토리로 체크아웃할 때 실행.
  • pre-auto-gc: 자동 garbage collection 실행 전 실행.
  • post-rewrite: 리베이스 후 커밋 변경 사항 처리.
  • post-receive-email: 푸시 후 이메일 알림 전송.



Git Hook 설정

Git Hook은 .git/hooks 디렉토리에 위치하며 기본적으로 Git 저장소를 생성하면 예제 파일(*.sample)이 제공됩니다.


.git/hooks 디렉토리에 스크립트 파일을 생성하며 파일 이름은 해당 Hook 이름과 동일해야 합니다. 예: pre-commit.


example)

# .git/hooks/pre-commit
# 예: 커밋 전에 ESLint 실행
echo "Running ESLint..."
npx eslint . || exit 1





참고

https://git-scm.com/docs/githooks