브랜치 네이밍 컨벤션: 팀이 합의해야 할 규칙들

feature/fix/hotfix/release 접두사 패턴부터 이슈 번호 연동, 특수문자 제약, Git hook으로 자동 검증하는 방법까지 브랜치 네이밍 컨벤션을 정리한다.

· 3 min read · PALDYN Team

지난 글에서 추적 브랜치의 원리를 살펴봤다. 이번에는 팀 전체가 합의해야 할 브랜치 네이밍 규칙을 정리한다. 브랜치 이름은 단순한 레이블이 아니라, 코드 리뷰·CI/CD·이슈 트래킹의 연결 고리가 된다.

기본 패턴: 타입/설명

가장 널리 쓰이는 구조는 <타입>/<설명> 형태다.

feature/user-auth
fix/login-null-pointer
hotfix/payment-crash
release/v2.1.0
chore/upgrade-vite-5
refactor/auth-service
docs/api-guide

슬래시(/)는 많은 Git GUI 도구에서 폴더로 시각화되어 목록을 정리해준다.

브랜치 네이밍 패턴

타입별 의미

타입용도
feature/새 기능 개발
fix/버그 수정 (일반)
hotfix/프로덕션 긴급 수정
release/릴리스 준비 브랜치
chore/빌드·의존성·설정 변경
refactor/기능 변경 없는 코드 개선
docs/문서 작업
test/테스트 추가·수정

이슈 번호 연동

GitHub·Jira·Linear 이슈 번호를 브랜치 이름에 포함하면 PR에서 이슈가 자동 연결된다.

# GitHub issue #123
git switch -c feature/GH-123-user-auth

# Jira ticket
git switch -c fix/PROJ-456-payment-timeout

GitHub는 브랜치 이름이나 커밋 메시지에 #123이 있으면 이슈를 자동으로 참조한다.

Good vs Bad 예시

Good vs Bad 브랜치 이름

기술적 제약

Git 브랜치 이름에 사용할 수 없는 문자들이 있다.

# 금지된 문자·패턴
~  ^  :  ?  *  \  ..  @{  공백  한글(권장하지 않음)

# 확인
git check-ref-format --branch "feature/my feature"
# → fatal: 'feature/my feature' is not a valid branch name

소문자 영숫자와 하이픈(-), 슬래시(/)만 쓰는 것이 가장 안전하다.

Git hook으로 자동 검증

팀 규칙을 강제하려면 commit-msg 또는 pre-push hook에서 브랜치 이름을 검사한다.

# .git/hooks/pre-push (실행 권한 필요)
#!/bin/sh
branch=$(git symbolic-ref --short HEAD)
pattern='^(feature|fix|hotfix|release|chore|refactor|docs|test)/.+'

if ! echo "$branch" | grep -qE "$pattern"; then
  echo "❌ 브랜치 이름이 규칙에 맞지 않습니다: $branch"
  echo "   허용 형식: feature/설명, fix/설명, hotfix/설명, ..."
  exit 1
fi

주의: main·master 예약 이름

프로젝트의 기본 브랜치 이름은 팀 전체가 합의해야 한다. GitHub는 기본값으로 main을 사용하며, 직접 push를 금지하는 보호 규칙을 함께 설정하는 것이 권장된다.

# 현재 기본 브랜치 이름 확인
git config --global init.defaultBranch

지난 글: 추적 브랜치(Tracking Branch): 로컬과 원격의 연결 고리

다음 글: git checkout vs git switch: 브랜치 전환 명령 비교


읽어주셔서 감사합니다. 😊