포스트

[이제와서 시작하는 GitHub 마스터하기 - 기초편 #11] Branch 기본: 독립적인 작업 공간 만들기

[이제와서 시작하는 GitHub 마스터하기 - 기초편 #11] Branch 기본: 독립적인 작업 공간 만들기

지난 편 복습

기초편 #10에서는 실전 워크플로우를 배웠습니다:

  • ✅ 프로젝트 시작부터 배포까지의 전체 흐름
  • ✅ 일일 작업 루틴과 팀 협업 워크플로우
  • ✅ 롤백과 문제 해결 방법

이제 본격적으로 브랜치(Branch)를 배워봅시다! 브랜치는 협업의 핵심 도구입니다.


학습 목표

이 장을 마치면 다음을 할 수 있습니다:

  • ✅ Branch(브랜치)의 개념과 필요성을 이해할 수 있습니다
  • ✅ 브랜치를 생성하고 전환할 수 있습니다
  • ✅ 브랜치를 관리하고 삭제할 수 있습니다
  • ✅ 브랜치 전략의 기본을 이해할 수 있습니다

Branch란?

개념

브랜치는 독립적인 작업 공간입니다. 메인 코드에 영향을 주지 않고 새로운 기능을 개발하거나 버그를 수정할 수 있습니다.

gitGraph
    commit
    commit
    branch feature
    checkout feature
    commit
    commit
    checkout main
    commit
    merge feature
    commit

왜 필요한가?

브랜치 없이 작업:

1
main: A → B → (실험 중...) → X (실패!) → 되돌리기 복잡

브랜치 사용:

1
2
3
main:    A → B → C → D (안전!)
           \
feature:    E → F → (실패!) → 브랜치만 삭제

장점:

  • 🔒 안전성: main 브랜치는 항상 안정적
  • 🚀 동시 작업: 여러 기능을 동시에 개발
  • 🔄 롤백 용이: 실패한 실험은 브랜치만 삭제
  • 👥 협업: 각자 브랜치에서 작업

기본 명령어

브랜치 확인

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 로컬 브랜치 목록
git branch
# * main
#   feature-login

# 원격 브랜치 포함
git branch -a
# * main
#   feature-login
#   remotes/origin/main
#   remotes/origin/feature-signup

# 각 브랜치의 마지막 커밋
git branch -v
# * main          a1b2c3d Add README
#   feature-login e4f5g6h Implement login

브랜치 생성

1
2
3
4
5
6
7
8
9
10
11
# 새 브랜치 생성
git branch feature-signup

# 생성 + 전환을 한 번에
git checkout -b feature-signup

# 또는 (Git 2.23+)
git switch -c feature-signup

# 특정 커밋에서 브랜치 생성
git branch feature-hotfix a1b2c3d

브랜치 전환

1
2
3
4
5
6
7
8
9
10
11
# 브랜치 전환
git checkout feature-signup

# 또는 (Git 2.23+)
git switch feature-signup

# 이전 브랜치로 돌아가기
git checkout -

# 강제 전환 (변경사항 무시, 위험!)
git checkout -f feature-signup

브랜치 삭제

1
2
3
4
5
6
7
8
# 로컬 브랜치 삭제
git branch -d feature-signup

# 강제 삭제 (병합 안 된 브랜치)
git branch -D feature-signup

# 원격 브랜치 삭제
git push origin --delete feature-signup

브랜치 작업 흐름

기능 개발 시나리오

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# 1. 최신 main으로 업데이트
git checkout main
git pull origin main

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

# 3. 작업 및 커밋
echo "profile code" > profile.js
git add profile.js
git commit -m "feat: add user profile"

# 4. 추가 작업
echo "styling" > profile.css
git add profile.css
git commit -m "style: add profile styling"

# 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 1. main에서 핫픽스 브랜치 생성
git checkout main
git checkout -b hotfix/login-error

# 2. 버그 수정
git add fixed-file.js
git commit -m "fix: resolve login error"

# 3. 푸시 및 PR
git push -u origin hotfix/login-error

# 4. 긴급 병합
# (코드 리뷰 후 즉시 main에 병합)

# 5. 정리
git checkout main
git pull origin main
git branch -d hotfix/login-error

브랜치 네이밍 컨벤션

일반적인 접두사

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 기능 개발
feature/user-authentication
feature/payment-integration

# 버그 수정
fix/login-button
bugfix/memory-leak

# 핫픽스 (긴급 수정)
hotfix/critical-security-patch

# 리팩토링
refactor/database-layer

# 문서
docs/api-documentation

# 테스트
test/integration-tests

# 릴리스
release/v1.2.0

네이밍 규칙

DO ✅:

  • feature/add-user-login (명확하고 구체적)
  • fix/navbar-alignment (문제가 명확)
  • hotfix/security-patch-v1 (긴급성 표시)

DON’T ❌:

  • my-branch (의미 불명확)
  • test (너무 일반적)
  • feature/updatestuff (불명확)

자주 묻는 질문 (FAQ)

Q1. main과 master의 차이는?

A: 기능은 동일합니다. GitHub는 2020년부터 기본 브랜치 이름을 main으로 변경했습니다.

1
2
3
# master를 main으로 변경
git branch -m master main
git push -u origin main

Q2. 브랜치 전환 시 변경사항이 사라지나요?

A: 아니요. 커밋하지 않은 변경사항은:

  1. 옵션 1: 커밋 후 전환
  2. 옵션 2: Stash로 임시 저장
1
2
3
4
5
git stash
git checkout other-branch
# 작업...
git checkout original-branch
git stash pop

Q3. 브랜치가 너무 많아졌어요!

A: 주기적으로 정리하세요:

1
2
3
4
5
6
7
8
# 병합된 브랜치 확인
git branch --merged

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

# 원격 브랜치 정리
git remote prune origin

Q4. 잘못된 브랜치에서 작업했어요!

A: 변경사항을 올바른 브랜치로 옮기세요:

1
2
3
4
5
6
7
8
9
10
11
12
# 1. 잘못된 브랜치에서 커밋
git add .
git commit -m "feat: new feature"

# 2. 올바른 브랜치 생성 (현재 위치에서)
git branch correct-branch

# 3. 잘못된 브랜치를 이전 상태로 되돌리기
git reset --hard HEAD~1

# 4. 올바른 브랜치로 전환
git checkout correct-branch

실습 과제

과제 1: 브랜치 기본 연습

  1. 새 저장소 생성
  2. main 브랜치에 README 커밋
  3. feature/test-branch 생성 및 전환
  4. 파일 추가 및 커밋
  5. main으로 돌아오기
  6. 브랜치 목록 확인

과제 2: 동시 작업 연습

  1. feature/login 브랜치 생성 및 작업
  2. feature/signup 브랜치 생성 및 작업
  3. 각 브랜치에서 커밋
  4. 브랜치 간 전환하며 파일 변화 확인

과제 3: 브랜치 정리

  1. 여러 브랜치 생성 (5개 이상)
  2. git branch 확인
  3. 사용하지 않는 브랜치 삭제
  4. git branch -v로 상태 확인

마무리

축하합니다! Git 브랜치의 기본을 마스터했습니다.

핵심 요약:

  • 브랜치: 독립적인 작업 공간
  • 생성: git checkout -b branch-name
  • 전환: git checkout branch-name
  • 삭제: git branch -d branch-name
  • 네이밍: feature/, fix/, hotfix/

다음 편에서는 Merge와 Rebase를 배워보겠습니다!

📚 GitHub 마스터하기 시리즈

🌱 기초편 (입문자)

  1. GitHub 소개와 계정 만들기
  2. 프로필 꾸미기와 포트폴리오
  3. 보안 설정과 인증
  4. Repository 이해하기
  5. README 작성법
  6. .gitignore와 라이선스
  7. 첫 커밋과 관리
  8. git add와 commit
  9. git push와 pull
  10. 실전 워크플로우
  11. Branch 기본 👉 현재 글
  12. Merge와 Rebase
  13. 브랜치 전략
  14. Fork와 Clone
  15. Pull Request

💼 실전편 (중급자)

  1. Issues 활용법
  2. Projects와 칸반보드
  3. 코드 리뷰 실전
  4. Discussions 활용
  5. 팀 협업 전략
  6. GitHub Pages 블로그

🚀 고급편 (전문가)

  1. GitHub Actions 입문
  2. Actions 고급 활용
  3. Webhooks와 API
  4. GitHub Apps 개발
  5. 보안 기능 활용
  6. Packages 레지스트리
  7. Codespaces 클라우드 개발
  8. GitHub CLI 마스터
  9. Insights와 Analytics

🏆 심화편 (전문가+)

  1. Submodules와 Subtree
  2. Git Internals 이해
  3. 브랜칭과 릴리스 전략
  4. GraphQL API 활용
  5. GitHub Copilot 마스터
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.