Git Hooks로 자동 검증 시스템 구축: pre-commit/pre-push 활용 가이드
AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

Git 훅스 활용: 커밋 및 푸시 전 자동 검증 시스템 구축

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

DevOps

대상자

  • 소프트웨어 개발자 및 DevOps 엔지니어
  • 중간~고급 수준의 Git 및 CI/CD 이해도
  • 코드 품질 관리, 자동화 프로세스 설정에 관심 있는 개발자

핵심 요약

  • pre-commit/pre-push 훅스는 커밋/푸시 전 코드 검증을 자동화
  • pre-commit: ESLint, Pylint 등 코드 스타일 검사단위 테스트 실행
  • pre-push: 브랜치 보호(main 직접 푸시 차단), 의존성 검증(package-lock.json 업데이트 확인)
  • Husky 도구를 통해 package.json 기반 훅스 설정 가능
  • npm install husky --save-devnpx husky add .husky/pre-commit "npm test" 명령어 사용
  • .git/hooks 디렉토리에 직접 훅스 스크립트 저장
  • chmod +x 명령어로 실행권한 부여 필요

섹션별 세부 요약

1. Git 훅스 기초 개념

  • Git 훅스 정의: 커밋, 푸시, 머지 등 특정 이벤트 전후에 자동 실행되는 스크립트
  • 주요 이점:
  • 코드 품질 강화 (ESLint, RuboCop 등)
  • 암호/기밀 정보 커밋 방지
  • 테스트 실패 시 커밋/푸시 중단
  • 예시 훅스:
  • pre-commit: eslint . 실행
  • pre-push: git symbolic-ref --short HEAD로 현재 브랜치 확인

2. 훅스 설정 및 실행 방법

  • .git/hooks 디렉토리 확인:
  • cd your-repo/.git/hooks
  • ls -la 명령어로 샘플 훅스(pre-commit.sample) 확인
  • 활성화 프로세스:
  1. .sample 확장자 제거: mv pre-commit.sample pre-commit
  2. 실행권한 부여: chmod +x pre-commit
  • 실행 예시 스크립트:

```bash

# ESLint 실행 예시

echo "Running ESLint..."

eslint .

if [ $? -ne 0 ]; then

echo "ESLint found errors. Commit aborted."

exit 1

fi

```

3. 훅스 활용 사례

  • JavaScript 프로젝트:
  • pre-commit 스크립트: black --check . (코드 포맷 검사) + pytest (단위 테스트 실행)
  • Python 프로젝트:
  • pre-push 스크립트: main 브랜치로의 직접 푸시 차단
  • if [ "$current_branch" = "main" ]; then echo "Pushing directly to 'main' is not allowed." exit 1; fi
  • 의존성 검증: package-lock.json 파일 업데이트 여부 확인

4. Husky 도구 활용

  • Husky 설치:
  • npm install husky --save-dev
  • npx husky init 명령어로 초기화
  • 훅스 설정:
  • npx husky add .husky/pre-commit "npm test" 명령어로 pre-commit 훅스 생성
  • 장점:
  • package.json 기반 훅스 관리 가능
  • 훅스 스크립트를 .husky/ 디렉토리에 저장

5. 훅스 관리 팁

  • 명령어로 훅스 무시:
  • git commit --no-verify (pre-commit 훅스 스킵)
  • git push --no-verify (pre-push 훅스 스킵)
  • 버전 관리 문제 해결:
  • .git/hooks 디렉토리가 버전 관리 대상이 아님
  • hooks/ 디렉토리에 스크립트 저장 후 .git/hooks/에 복사
  • cp hooks/pre-commit .git/hooks/pre-commit && chmod +x .git/hooks/pre-commit

결론

  • Git 훅스는 자동화된 코드 품질 검증의 핵심 도구
  • Husky 사용을 통해 package.json 기반으로 훅스 관리 시 효율성 향상
  • pre-commit/pre-push 훅스 스크립트 작성 시 chmod +x 명령어로 실행권한 부여 필수