git branch

한 줄 요약

브랜치를 생성, 삭제, 목록 조회

선행 지식

기본 사용법

# 브랜치 목록 보기
git branch
 
# 브랜치 생성
git branch <브랜치>
 
# 브랜치 삭제
git branch -d <브랜치>

주요 옵션

옵션설명예시
(없음)로컬 브랜치 목록git branch
-a / --all모든 브랜치 (원격 포함)git branch -a
-r / --remote원격 브랜치만git branch -r
-v / --verbose마지막 커밋 정보 포함git branch -v
-d브랜치 삭제 (병합된 것만)git branch -d feature
-D브랜치 강제 삭제git branch -D feature
-m브랜치 이름 변경git branch -m old new

실제 예제

브랜치 목록 보기

$ git branch
  develop
  feature/login
* main              # * 표시가 현재 브랜치

원격 브랜치 포함 보기

$ git branch -a
  develop
* main
  remotes/origin/develop
  remotes/origin/main

상세 정보 보기

$ git branch -v
  develop      a1b2c3d feat: 기능 추가
  feature/login 9x8y7z6 fix: 로그인 버그 수정
* main         5w4v3u2 Merge branch 'develop'

브랜치 생성

# 현재 위치에서 새 브랜치 생성
git branch feature/signup
 
# 특정 커밋에서 브랜치 생성
git branch hotfix a1b2c3d
 
# 생성과 동시에 전환
git switch -c feature/signup
# 또는
git checkout -b feature/signup

생성만 vs 생성+전환

  • git branch feature → 생성만 (현재 브랜치 유지)
  • git switch -c feature → 생성 + 전환

브랜치 삭제

# 병합된 브랜치 삭제
git branch -d feature/login
# Deleted branch feature/login (was a1b2c3d).
 
# 병합 안 된 브랜치 강제 삭제
git branch -D experimental

-d vs -D

  • -d: 병합된 브랜치만 삭제 (안전)
  • -D: 강제 삭제 (작업 내용 유실 가능)

브랜치 이름 변경

# 현재 브랜치 이름 변경
git branch -m new-name
 
# 특정 브랜치 이름 변경
git branch -m old-name new-name

브랜치 비교

# 두 브랜치 간 차이 커밋
git log main..feature
 
# main에는 없고 feature에만 있는 커밋
git log main..feature --oneline
 
# feature에는 없고 main에만 있는 커밋
git log feature..main --oneline

병합된 브랜치 확인

# main에 병합된 브랜치들
git branch --merged main
 
# 아직 병합 안 된 브랜치들
git branch --no-merged main

삭제해도 안전한 브랜치 확인에 유용합니다:

# 병합된 브랜치들 삭제 (main, develop 제외)
git branch --merged | grep -v "main\|develop" | xargs git branch -d

브랜치 네이밍 규칙

권장 형식

타입/설명

예시:
feature/user-authentication
bugfix/login-error
hotfix/security-patch
release/v1.2.0

주의사항

# ❌ 피해야 할 이름
git branch "my branch"     # 공백
git branch feature..login  # 연속 점
git branch ~feature        # 특수문자
 
# ✅ 좋은 이름
git branch feature/login
git branch fix/issue-123
git branch release-v1.0

자주 하는 실수

현재 브랜치를 삭제하려고 함

$ git branch -d main
error: Cannot delete branch 'main' checked out

해결: 다른 브랜치로 전환 후 삭제

git switch develop
git branch -d main

병합 안 된 브랜치 삭제 시 에러

$ git branch -d feature
error: The branch 'feature' is not fully merged.

선택:

  1. 먼저 병합: git merge feature
  2. 강제 삭제: git branch -D feature (작업 유실!)

원격 브랜치 삭제 방법

# 원격 브랜치 삭제
git push origin --delete feature/old-branch

관련 명령어

더 알아보기