본문 바로가기

Develop/Git

Git checkout → switch & restore 완전 정리

Git checkoutswitch & restore 완전 정리

Git을 사용하다 보면 가장 많이 쓰는 명령어 중 하나가 checkout입니다.
하지만 checkout은 너무 많은 역할을 맡고 있어서 처음 배우는 사람에게 혼란을 주곤 합니다.

그래서 Git 2.23(2019년)부터는 역할을 분리해
👉 브랜치 전용: switch
👉 파일/내용 복원 전용: restore
을 새로 도입했습니다.


1. git checkout (기존 방식)

checkout브랜치 이동 + 파일 복원까지 모두 담당합니다.

# 브랜치 이동
git checkout develop

# 새 브랜치 생성 + 이동
git checkout -b feature/login

# 특정 파일을 main 브랜치 상태로 되돌리기
git checkout main -- src/App.java

2. git switch (브랜치 전용)

switch는 오직 브랜치 이동/생성만 담당합니다.

# 브랜치 이동
git switch develop

# 새 브랜치 생성 + 이동
git switch -c feature/login

3. git restore (파일 복원 전용)

파일 복원은 restore에서 담당합니다.

# 수정한 파일을 마지막 커밋 상태로 되돌리기
git restore src/App.java

# 특정 브랜치의 파일 가져오기
git restore --source=main src/App.java

# 워킹 디렉토리 + 스테이징 둘 다 되돌리기
git restore --staged --worktree src/App.java

4. 차이 요약

기능 git checkout git switch git restore
브랜치 이동
새 브랜치 생성 ✅ (-b) ✅ (-c)
파일 복원
직관성 ❌ 헷갈림 ✅ 명확 ✅ 명확

 


5. 정리

✅ 앞으로는 checkout 대신

  • 브랜치 관련 작업git switch
  • 파일 복원 작업git restore
    를 쓰는 것이 더 안전하고 직관적입니다.