프로그래밍/Git

[Git 명령어] git switch 파헤치기

분석벌레 2025. 12. 11. 13:11
728x90
git switch vs git checkout 가이드
Git · Branch / Commands

git switch vs git checkout – 무엇을 써야 할까?

이 가이드는 Git을 처음 접하는 개발자도 git switchgit checkout의 차이를 명확하게 이해하고, 실전에서 어떤 명령을 언제 써야 할지 감을 잡도록 돕기 위한 글입니다.

#git #git-switch #git-checkout #branch

1. 왜 git switch가 생겼을까?

오랫동안 Git에서는 git checkout이 “만능 명령”처럼 쓰였습니다. 브랜치를 옮기고, 새 브랜치를 만들고, 심지어 특정 파일 내용까지 되돌리는 일을 전부 checkout 하나로 처리했죠.

문제는 너무 많은 기능을 한 명령에 몰아 넣다 보니:

  • 명령의 의미가 직관적이지 않고
  • 초보자에게 설명하기 어렵고
  • 실수하기 쉬운 상황(브랜치 이동 vs 파일 되돌리기)이 생긴다는 점입니다.
이 문제를 해결하기 위해 Git 2.23부터
브랜치 관련: 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 switchgit restore 위주로 익히면 개념이 더 깔끔해집니다.

Q2. 팀에서는 어떤 걸 쓰는 게 좋을까요?

  • 초보자가 많은 팀이라면: 브랜치 = switch, 파일 = restore로 통일하는 것을 추천
  • 이미 checkout에 익숙한 팀이라면: 기존 스타일을 유지하되, 점진적으로 switch/restore 도입도 고려

Q3. Git 버전이 낮아서 git switch가 안 될 수도 있나요?

네, git switchgit restore는 Git 2.23 이상에서 도입되었습니다. 버전이 낮다면 Git을 최신 버전으로 업데이트하는 것을 추천합니다.

7. 한 줄 정리 & 추천 사용법

한 줄 요약:

git checkout은 “다 하는 만능 명령”이고,
git switch는 “브랜치 전담, 더 안전하고 직관적인 신형 명령”입니다.

브랜치를 오갈 때는 git switch, 파일 내용을 되돌릴 때는 git restore를 사용하는 습관을 들이면 Git이 훨씬 덜 헷갈리고, 실수도 줄어듭니다.