Git & GitHub 강좌/6. 고급 기능

고급 기능 : Git Hook

_Blue_Sky_ 2024. 10. 6. 11:02
728x90
728x90

Git Hook: 개발 워크플로를 자동화하는 강력한 도구

Git Hook이란 무엇일까요?

Git Hook은 Git 리포지토리에서 특정 이벤트가 발생할 때 자동으로 실행되는 스크립트를 말합니다. 이를 통해 개발 과정에서 반복적인 작업을 자동화하고, 프로젝트 규모가 커질수록 발생할 수 있는 다양한 문제를 미리 방지할 수 있습니다.

예를 들어, 커밋하기 전에 코드 형식을 자동으로 검사하거나, 새로운 브랜치를 생성할 때마다 특정 파일을 자동으로 추가하는 등 다양한 작업을 수행할 수 있습니다.

Git Hook의 종류

Git Hook은 크게 클라이언트 훅과 서버 훅으로 나눌 수 있습니다.

  • 클라이언트 훅: 로컬 리포지토리에서 실행되는 훅으로, 커밋, 병합, push 등과 같은 이벤트 발생 시 실행됩니다.
    • pre-commit: 커밋하기 전에 실행되어 커밋 메시지 검사, 코드 형식 검사 등을 수행합니다.
    • post-commit: 커밋 후에 실행되어 커밋 로그를 남기거나, 다른 시스템에 알림을 보내는 등의 작업을 수행합니다.
    • pre-push: push 하기 전에 실행되어 원격 저장소와의 차이점을 확인하거나, 특정 조건을 만족하지 않을 경우 push를 막을 수 있습니다.
  • 서버 훅: 원격 저장소에서 실행되는 훅으로, push 이벤트 발생 시 실행됩니다.
    • pre-receive: push 받기 전에 실행되어 push 내용을 검사하고, 허용되지 않는 변경 사항이 있는 경우 push를 거부할 수 있습니다.
    • post-receive: push 받은 후에 실행되어 자동으로 배포를 진행하거나, 이메일 알림을 보내는 등의 작업을 수행합니다.
728x90

Git Hook의 활용 사례

  • 코드 품질 관리:
    • linter: 코드 스타일 가이드를 준수하는지 검사하여 일관된 코드 스타일을 유지합니다.
    • formatter: 코드를 자동으로 포맷하여 가독성을 높입니다.
    • unit test: 커밋하기 전에 자동으로 단위 테스트를 실행하여 코드의 정확성을 보장합니다.
  • 워크플로 자동화:
    • commit message validation: 커밋 메시지 형식을 검사하여 표준을 준수하도록 합니다.
    • branch protection: 특정 브랜치에 대한 push를 제한하여 코드 변경을 관리합니다.
    • deployment: push 이벤트 발생 시 자동으로 배포를 진행합니다.
  • 협업 효율 증대:
    • hook-based workflows: 특정 이벤트에 따라 자동으로 다른 작업을 트리거하여 개발 흐름을 간소화합니다.
    • custom commands: 자주 사용하는 Git 명령을 커스텀 명령으로 만들어 편의성을 높입니다.

Git Hook 설정 방법

Git Hook을 설정하는 방법은 매우 간단합니다. .git/hooks 디렉토리에 실행 가능한 스크립트 파일을 생성하면 됩니다. 예를 들어, pre-commit 훅을 설정하려면 .git/hooks/pre-commit 파일을 생성하고 원하는 스크립트를 작성하면 됩니다.

스크립트 예시 (Bash):

#!/bin/bash

# 코드 형식 검사
eslint .

# 단위 테스트 실행
npm test

# 검사 결과에 따라 종료 상태 코드 반환
if [ $? -ne 0 ]; then
  echo "Code style or test failures found. Commit aborted."
  exit 1
fi
 

Git Hook 관리 도구

Git Hook을 관리하기 위한 다양한 도구들이 존재합니다.

  • Husky: Node.js 프로젝트에서 Git Hook을 간편하게 설정할 수 있는 도구입니다.
  • Lint Staged: Git 스테이징 영역에 있는 파일만 대상으로 linter를 실행하여 성능을 향상시킵니다.
  • Commitlint: 커밋 메시지 형식을 검사하는 도구입니다.

결론

Git Hook은 개발 과정을 자동화하고 표준화하여 개발 효율을 높이고, 코드 품질을 향상시키는 데 매우 유용한 도구입니다. 다양한 활용 사례와 함께 자신만의 개발 환경에 맞는 Git Hook을 설정하여 개발 생산성을 높여보세요.

 

728x90
728x90

'Git & GitHub 강좌 > 6. 고급 기능' 카테고리의 다른 글

고급 기능 : Submodule  (0) 2024.10.06
고급 기능 : Stash  (0) 2024.10.06
고급 기능 : Tag  (0) 2024.10.06