Project Management/Github

GitHub 브랜치 생성 및 관리 방법

bluebamus 2025. 9. 23.

브랜치 기본 개념

브랜치란?

  • 독립적인 개발 라인: 메인 코드에 영향 없이 새로운 기능 개발
  • 병렬 작업: 여러 개발자가 동시에 다른 기능 작업 가능
  • 안전한 실험: 실패해도 메인 브랜치에 영향 없음

1. 브랜치 생성

로컬에서 브랜치 생성

# 새 브랜치 생성
git branch feature/새기능

# 브랜치 생성과 동시에 전환
git checkout -b feature/새기능

# 최신 Git (2.23+)
git switch -c feature/새기능

# 특정 커밋에서 브랜치 생성
git checkout -b hotfix/버그수정 abc1234

 

원격에서 브랜치 생성 (GitHub 웹)

1. GitHub 저장소 접속
2. 브랜치 드롭다운 클릭
3. 새 브랜치명 입력
4. "Create branch" 클릭

 

2. 브랜치 조회 및 전환

브랜치 목록 확인

# 로컬 브랜치 목록
git branch

# 원격 브랜치 포함 전체 목록
git branch -a

# 원격 브랜치만 조회
git branch -r

# 브랜치 상세 정보
git branch -v

 

브랜치 전환

# 기존 브랜치로 전환
git checkout main
git switch main  # 최신 Git

# 원격 브랜치를 로컬로 가져와서 전환
git checkout -b feature/새기능 origin/feature/새기능
git switch -c feature/새기능 origin/feature/새기능

 

3. 브랜치 동기화

원격 저장소와 동기화

# 원격 저장소 정보 가져오기
git fetch origin

# 모든 원격 브랜치 정보 가져오기
git fetch --all

# 현재 브랜치를 원격과 동기화
git pull origin feature/새기능

# 로컬 브랜치를 원격에 푸시
git push origin feature/새기능

# 최초 푸시 (업스트림 설정)
git push -u origin feature/새기능

 

4. 브랜치 병합 (Merge)

기본 병합

# main 브랜치로 전환
git checkout main

# feature 브랜치 병합
git merge feature/새기능

# 병합 후 원격에 푸시
git push origin main

 

Fast-forward vs 3-way Merge

# Fast-forward 방지 (항상 merge commit 생성)
git merge --no-ff feature/새기능

# Squash 병합 (여러 커밋을 하나로 압축)
git merge --squash feature/새기능
git commit -m "새기능 추가"

 

5. Pull Request를 통한 병합

GitHub에서 PR 생성

1. GitHub 저장소 접속
2. "Pull requests" 탭
3. "New pull request" 클릭
4. 소스/타겟 브랜치 선택
5. 제목/설명 작성
6. "Create pull request" 클릭

 

PR 리뷰 및 병합

1. 코드 리뷰 진행
2. 승인 후 "Merge pull request"
3. 병합 옵션 선택:
   - Create a merge commit
   - Squash and merge
   - Rebase and merge

 

6. 브랜치 삭제

로컬 브랜치 삭제

# 병합된 브랜치 삭제
git branch -d feature/새기능

# 강제 삭제 (병합되지 않은 브랜치)
git branch -D feature/새기능

# 원격 브랜치 삭제
git push origin --delete feature/새기능

 

정리 작업

# 원격에서 삭제된 브랜치 정보 로컬에서 제거
git remote prune origin

# 병합된 브랜치들 일괄 삭제
git branch --merged | grep -v "\*\|main\|develop" | xargs -n 1 git branch -d

 

7. 브랜치 전략

Git Flow

# 메인 브랜치
main        # 프로덕션 배포용
develop     # 개발 통합 브랜치

# 보조 브랜치
feature/    # 새 기능 개발
release/    # 배포 준비
hotfix/     # 긴급 수정

 

브랜치 명명 규칙

# 기능 개발
feature/기능명
feature/user-authentication
feature/payment-integration

# 버그 수정
bugfix/버그명
bugfix/login-error
bugfix/payment-validation

# 긴급 수정
hotfix/보안패치
hotfix/critical-security-fix

# 릴리즈
release/v1.2.0
release/2024-01-release

 

8. 실제 워크플로우 예시

새 기능 개발 프로세스

# 1. 최신 main 브랜치로 업데이트
git checkout main
git pull origin main

# 2. 새 기능 브랜치 생성
git checkout -b feature/user-profile

# 3. 개발 작업
# ... 코드 작성 ...

# 4. 변경사항 커밋
git add .
git commit -m "사용자 프로필 페이지 추가"

# 5. 원격에 푸시
git push -u origin feature/user-profile

# 6. GitHub에서 Pull Request 생성

# 7. 리뷰 완료 후 병합

# 8. 로컬 정리
git checkout main
git pull origin main
git branch -d feature/user-profile

 

핫픽스 프로세스

# 1. main에서 핫픽스 브랜치 생성
git checkout main
git checkout -b hotfix/security-patch

# 2. 수정 작업
# ... 버그 수정 ...

# 3. 커밋 및 푸시
git commit -m "보안 취약점 수정"
git push -u origin hotfix/security-patch

# 4. 긴급 PR 생성 및 병합

# 5. develop 브랜치에도 적용 (필요시)
git checkout develop
git merge hotfix/security-patch
git push origin develop

 

9. 유용한 브랜치 관리 명령어

브랜치 비교

# 브랜치 간 차이점 확인
git diff main..feature/새기능

# 커밋 로그 비교
git log main..feature/새기능

# 파일별 변경사항
git diff main..feature/새기능 -- filename.py

 

브랜치 리베이스

# feature 브랜치를 main 기준으로 리베이스
git checkout feature/새기능
git rebase main

# 인터랙티브 리베이스 (커밋 정리)
git rebase -i HEAD~3

 

브랜치 상태 확인

# 현재 브랜치와 상태
git status

# 브랜치별 마지막 커밋
git for-each-ref --format='%(refname:short) %(committerdate)' refs/heads

# 원격 브랜치 추적 상태
git branch -vv

 

10. 팀 협업 베스트 프랙티스

브랜치 관리 규칙

# 1. 브랜치명은 명확하고 일관성 있게
feature/JIRA-123-user-login
bugfix/fix-payment-error

# 2. 정기적으로 main과 동기화
git checkout feature/새기능
git rebase main  # 또는 git merge main

# 3. 작은 단위로 자주 커밋
git commit -m "로그인 폼 UI 추가"
git commit -m "로그인 API 연동"

# 4. PR 설명을 상세히 작성

 

충돌 해결

# 병합 충돌 발생 시
git merge feature/새기능
# Auto-merging file.py
# CONFLICT (content): Merge conflict in file.py

# 충돌 파일 수정 후
git add file.py
git commit -m "충돌 해결"

댓글