포스트

[GitHub 100일 챌린지] Day 43 - 브랜치 이동하기

[GitHub 100일 챌린지] Day 43 - 브랜치 이동하기

100일 챌린지 Day 43 - git checkout과 git switch로 브랜치를 이동합니다.

배울 내용

  1. git checkout으로 브랜치 전환
  2. git switch 새로운 방식
  3. 브랜치 전환 시 주의사항

Topic1. git checkout으로 브랜치 전환

git checkout은 브랜치 간 이동을 위한 전통적인 명령어입니다.

기본 사용법

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 브랜치 목록 확인
git branch

# 출력:
* main
  feature/login
  develop

# 브랜치 전환
git checkout feature/login

# 확인
git branch

# 출력:
  main
* feature/login
  develop

작업 디렉토리 변화

브랜치 전환 시 파일 변경:

1
2
3
4
5
6
7
8
9
# main 브랜치에서
git checkout main
ls
# 출력: README.md index.html

# feature 브랜치로 전환
git checkout feature/login
ls
# 출력: README.md index.html login.html (login.html 추가됨!)

해보기: 브랜치 전환 실습

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
# 저장소 준비
mkdir branch-switch-test
cd branch-switch-test
git init

# main에서 작업
echo "Main branch" > main.txt
git add main.txt
git commit -m "Add main.txt"

# 새 브랜치 생성 및 전환
git checkout -b feature/test

# feature 브랜치에서 작업
echo "Feature branch" > feature.txt
git add feature.txt
git commit -m "Add feature.txt"

# main으로 돌아가기
git checkout main
ls
# 출력: main.txt (feature.txt 없음!)

# 다시 feature로
git checkout feature/test
ls
# 출력: main.txt feature.txt (둘 다 있음!)

결과

1
2
3
✅ 브랜치 전환으로 파일 구성 변경됨
✅ 각 브랜치는 독립적인 작업 공간
✅ 커밋된 내용만 브랜치별로 유지

Topic2. git switch 새로운 방식

Git 2.23+ 버전의 현대적인 브랜치 전환 명령어입니다.

git switch 기본 사용

1
2
3
4
5
6
7
8
# 브랜치 전환
git switch feature/login

# 브랜치 생성 + 전환
git switch -c feature/payment

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

checkout vs switch 비교

git checkout의 문제점:

1
2
3
4
5
6
7
8
# 브랜치 전환
git checkout feature/login

# 파일 복원 (혼란스러움!)
git checkout -- file.txt

# 새 브랜치 생성 + 전환
git checkout -b feature/payment

git switch로 명확하게:

1
2
3
4
5
6
7
8
# 브랜치 전환 (switch)
git switch feature/login

# 파일 복원 (restore)
git restore file.txt

# 새 브랜치 생성 + 전환 (switch -c)
git switch -c feature/payment

해보기: switch vs checkout 비교

1
2
3
4
5
6
7
8
9
10
11
12
13
# 전통적 방식
git checkout main
git checkout -b feature/new-feature
git checkout develop

# 현대적 방식
git switch main
git switch -c feature/new-feature
git switch develop

# 이전 브랜치로 빠르게 돌아가기
git switch -
git switch -

결과

switch의 장점:

1
2
3
4
✅ 명령어 목적이 명확함
✅ 브랜치 전환에만 집중
✅ 실수 가능성 감소
✅ 더 직관적인 옵션

Topic3. 브랜치 전환 시 주의사항

브랜치 전환 전 확인해야 할 사항들입니다.

미커밋 변경사항 주의

커밋하지 않은 변경사항이 있으면?:

1
2
3
4
5
6
7
8
9
10
11
12
# feature 브랜치에서 작업
git checkout feature/test
echo "Work in progress" > wip.txt
git add wip.txt
# (커밋 안 함!)

# main으로 전환 시도
git checkout main

# 에러 발생!
error: Your local changes would be overwritten by checkout
Please commit your changes or stash them

해결 방법 1: 커밋하기:

1
2
3
git add .
git commit -m "WIP: Temporary commit"
git checkout main

해결 방법 2: Stash 사용:

1
2
3
4
5
git stash
git checkout main
# 나중에 다시 돌아와서
git checkout feature/test
git stash pop

충돌 발생 시나리오

파일 충돌 예방:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# main에서 파일 수정
git checkout main
echo "Main version" > shared.txt
git add shared.txt
git commit -m "Update shared.txt in main"

# feature에서도 같은 파일 수정
git checkout feature/test
echo "Feature version" > shared.txt
git add shared.txt
git commit -m "Update shared.txt in feature"

# 이제 두 브랜치는 같은 파일의 다른 버전을 가짐
# 병합 시 충돌 발생 가능!

해보기: 안전한 브랜치 전환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 1. 항상 상태 확인
git status

# 출력:
On branch feature/test
Changes not staged for commit:
  modified:   index.html

# 2. 변경사항 처리
# 옵션 A: 커밋
git add .
git commit -m "Complete feature"

# 옵션 B: Stash
git stash save "WIP: feature work"

# 3. 이제 안전하게 전환
git checkout main

# 4. 작업 완료 후 돌아오기
git checkout feature/test

# Stash했다면 복원
git stash pop

강제 전환 (위험!)

1
2
3
4
5
6
7
# 변경사항 버리고 강제 전환
git checkout -f main

# 또는
git switch --discard-changes main

# ⚠️ 경고: 커밋하지 않은 모든 변경사항 손실!

결과

안전한 브랜치 전환 체크리스트:

1
2
3
4
5
✅ git status로 현재 상태 확인
✅ 변경사항을 커밋 또는 stash
✅ 클린 상태에서 브랜치 전환
✅ 충돌 가능성 인지
❌ 강제 전환(-f) 사용 자제

전환 전 확인사항:

  1. 미커밋 변경사항 없는지 확인
  2. Untracked 파일 처리
  3. 충돌 가능성 검토

정리

오늘 배운 내용:

1. git checkout:

1
2
3
git checkout [브랜치]      # 브랜치 전환
git checkout -b [브랜치]   # 생성 + 전환
git checkout -             # 이전 브랜치로

2. git switch (추천):

1
2
3
git switch [브랜치]        # 브랜치 전환
git switch -c [브랜치]     # 생성 + 전환
git switch -               # 이전 브랜치로

3. 주의사항:

  • 전환 전 git status 확인
  • 미커밋 변경사항 처리
  • Stash 또는 커밋 필수

완료 체크:

  • git checkout으로 브랜치 전환할 수 있다
  • git switch 사용법을 안다
  • 브랜치 전환 시 주의사항을 이해했다

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.