git & github

git hook을 이용한 commit 메시지에 자동으로 branch명 추가하기

stdhsw 2025. 5. 22. 19:21

git commit 메시지에 자동으로 branch명 추가하기

사소한 일이지만 commit 메시지를 작성할 때마다 branch명을 붙여주는 것은 매우 귀찮은 일입니다. 이를 자동화하기 위해 git hook을 사용할 수 있는데 이러한 git hook 설정 또한 global 설정을 통해 새롭게 생성한 repository 또는 새롭게 clone한 repository에서도 자동으로 적용되도록 할 수 있습니다. 이번 포스팅에서는 git commit 메시지에 branch명을 자동으로 붙여주는 git hook을 설정하는 방법에 대해 알아보겠습니다.
 

git hook이란?

git hook은 git의 특정 이벤트가 발생했을 때 자동으로 실행되는 스크립트입니다. git hook은 크게 client-side hook과 server-side hook으로 나뉘며, client-side hook은 commit, push, merge 등의 이벤트에 대해 실행되고, server-side hook은 push, receive 등의 이벤트에 대해 실행됩니다. git hook은 git repository의 `.git/hooks` 디렉토리에 위치하고 있으며, 각 이벤트에 대한 스크립트 파일이 존재합니다. 이 스크립트 파일은 기본적으로 샘플로 제공되며, 사용자가 원하는 대로 수정하여 사용할 수 있습니다.
 

global git hook 설정하기

git hook은 기본적으로 repository 단위로 설정되지만, global 설정을 통해 모든 repository에서 사용할 수 있도록 설정할 수 있습니다. global git hook을 설정하기 위해서는 다음과 같은 단계를 거쳐야 합니다.
 
디렉토리 생성 및 git hook 작성

# 디렉토리 생성
mkdir -p ~/.git-templates/hooks

 

vim ~/.git-templates/hooks/prepare-commit-msg (아래 내용 작성)

#!/bin/bash

BRANCH_NAME=$(git symbolic-ref --short HEAD)
COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2

# 머지 커밋, 리베이스 등 자동 메시지는 제외
if [ "$COMMIT_SOURCE" = "merge" ] || [ "$COMMIT_SOURCE" = "squash" ]; then
    exit 0
fi

# 메시지 앞에 브랜치 이름 삽입
sed -i.bak "1s/^/[$BRANCH_NAME] /" "$COMMIT_MSG_FILE"


global git hook 설정

# git hook에 실행 권한 부여
chmod +x ~/.git-templates/hooks/prepare-commit-msg

# git config에 global template 설정
git config --global init.templateDir '~/.git-templates'

 

실습 테스트

이제 간단하게 테스트를 해보겠습니다. 새로운 repository를 생성하고, 새로운 브랜치를 생성한 후 commit을 하고 commit 메시지를 확인해 보겠습니다.

# 새로운 repository 생성
mkdir test-repo
cd test-repo

# git 초기화
git init

# 새로운 브랜치 생성
git switch -c develop main

touch test.txt
git add test.txt
git commit -m "test commit"

 

결과 확인

test commit만 입력했지만 [main] test commit으로 작성된 것을 확인할 수 있습니다.

'git & github' 카테고리의 다른 글

GitHub Actions 로컬 테스트 방법 (with act)  (1) 2025.07.15
주니어 개발자가 알면 좋은 git 명령어 정리  (1) 2023.07.12
git config  (0) 2023.07.11
git commit template 설정하기  (0) 2023.07.10