[Git 명령어] git switch 파헤치기
git switch vs git checkout – 무엇을 써야 할까?
이 가이드는 Git을 처음 접하는 개발자도 git switch와 git checkout의 차이를 명확하게 이해하고, 실전에서 어떤 명령을 언제 써야 할지 감을 잡도록 돕기 위한 글입니다.
1. 왜 git switch가 생겼을까?
오랫동안 Git에서는 git checkout이 “만능 명령”처럼 쓰였습니다.
브랜치를 옮기고, 새 브랜치를 만들고, 심지어 특정 파일 내용까지 되돌리는 일을 전부 checkout 하나로 처리했죠.
문제는 너무 많은 기능을 한 명령에 몰아 넣다 보니:
- 명령의 의미가 직관적이지 않고
- 초보자에게 설명하기 어렵고
- 실수하기 쉬운 상황(브랜치 이동 vs 파일 되돌리기)이 생긴다는 점입니다.
브랜치 관련:
git switch,
파일 내용 되돌리기: git restore이렇게 역할을 분리하는 흐름이 생겼습니다.
2. git switch – 브랜치 전담 명령
git switch는 이름 그대로 브랜치를 “전환(switch)”하는 것에만 집중한 명령입니다.
따라서 기능이 명확하고, 실수할 여지가 적습니다.
2-1. 기존 브랜치로 이동하기
git switch main
git switch feature/login
지금까지 git checkout main으로 하던 브랜치 이동 작업을
git switch main으로 대체할 수 있습니다.
2-2. 새 브랜치 생성 + 즉시 이동
git switch -c feature/login
이 한 줄은 아래 두 명령을 합쳐 놓은 것과 같습니다.
git branch feature/login
git switch feature/login
2-3. 원격 브랜치를 기준으로 새 브랜치 만들기
git switch -c feature/login origin/main
origin/main을 기반으로 새 브랜치 feature/login을 만들고, 동시에 이동합니다.
협업 환경에서 매우 자주 사용하는 패턴입니다.
3. git checkout – 여전히 동작하지만, 역할이 너무 많다
git checkout은 지금도 널리 쓰이고 있고, 앞으로도 상당 기간 함께 사용할 수 있는 명령입니다.
다만, 역할이 너무 광범위하다는 점이 문제입니다.
3-1. 브랜치 이동
git checkout main
git checkout feature/login
3-2. 브랜치 생성 + 이동
git checkout -b feature/login
3-3. 특정 커밋 기준으로 파일 내용 되돌리기
git checkout HEAD~1 -- app.py
이때는 브랜치가 바뀌지는 않지만, 파일 내용이 바뀝니다. 브랜치 이동과 파일 되돌리기를 모두 담당하다 보니, “지금 checkout이 뭘 하는 거지?” 헷갈리기 쉬운 구조입니다.
git checkout은
“브랜치 옮기나? 파일을 되돌리나?”를 혼동하기 쉽기 때문에
브랜치 = switch, 파일 = restore로 나누어 쓰는 연습이 좋습니다.
4. git switch vs git checkout – 비교 정리
| 용도 | 기존 방식 (checkout) | 분리된 방식 (switch / restore) |
|---|---|---|
| 브랜치 이동 | git checkout main |
git switch main |
| 새 브랜치 생성 + 이동 | git checkout -b feature/login |
git switch -c feature/login |
| 원격 브랜치 기반 새 브랜치 | git checkout -b feature/login origin/main |
git switch -c feature/login origin/main |
| 파일 내용 되돌리기 | git checkout HEAD~1 -- app.py |
git restore 계열로 분리 권장 |
5. 실전 예시 – 새 기능 브랜치 만들기
5-1. 예전 스타일 (checkout 사용)
# 새 브랜치 생성 + 이동
git checkout -b feature/login
# 작업 후 커밋
git add .
git commit -m "Feat: 로그인 기능 구현"
# main으로 이동
git checkout main
# 최신 main 가져오기
git pull origin main
# 작업 브랜치 merge
git merge feature/login
5-2. 새 스타일 (switch 사용)
# 새 브랜치 생성 + 이동
git switch -c feature/login
# 작업 후 커밋
git add .
git commit -m "Feat: 로그인 기능 구현"
# main으로 이동
git switch main
# 최신 main 가져오기
git pull origin main
# 작업 브랜치 merge
git merge feature/login
하는 일은 거의 동일하지만,
switch라는 이름 덕분에 “아, 브랜치 전환하는 명령이구나”라고 직관적으로 이해하기 쉽습니다.
6. 자주 하는 질문 (FAQ)
Q1. 그럼 이제 git checkout은 쓰면 안 되나요?
아닙니다. git checkout은 여전히 동작하고, 많은 문서와 예제에서 사용 중입니다.
다만, 새로 Git을 배우는 사람이라면
git switch와 git restore 위주로 익히면 개념이 더 깔끔해집니다.
Q2. 팀에서는 어떤 걸 쓰는 게 좋을까요?
- 초보자가 많은 팀이라면: 브랜치 = switch, 파일 = restore로 통일하는 것을 추천
- 이미 checkout에 익숙한 팀이라면: 기존 스타일을 유지하되, 점진적으로 switch/restore 도입도 고려
Q3. Git 버전이 낮아서 git switch가 안 될 수도 있나요?
네, git switch와 git restore는 Git 2.23 이상에서 도입되었습니다.
버전이 낮다면 Git을 최신 버전으로 업데이트하는 것을 추천합니다.
7. 한 줄 정리 & 추천 사용법
한 줄 요약:
git checkout은 “다 하는 만능 명령”이고,
git switch는 “브랜치 전담, 더 안전하고 직관적인 신형 명령”입니다.
브랜치를 오갈 때는 git switch,
파일 내용을 되돌릴 때는 git restore를 사용하는 습관을 들이면
Git이 훨씬 덜 헷갈리고, 실수도 줄어듭니다.