설명
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
참고
'git & github' 카테고리의 다른 글
git Patch 생성과 적용 (2) | 2025.01.03 |
---|---|
Git Commit 메시지 제대로 작성하기 (0) | 2024.04.24 |
git github 처음부터 다시 배우기 - 6. git hub 활용 (0) | 2023.02.15 |
git github 처음부터 다시 배우기 - 5. git 활용 (0) | 2023.02.13 |
git github 처음부터 다시 배우기 - 3. git 디테일 (0) | 2023.02.13 |