Git checkout
→ switch
& 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
를 쓰는 것이 더 안전하고 직관적입니다.
'Develop > Git' 카테고리의 다른 글
Git 협업 시 자주 발생하는 충돌 상황 & 해결 방법 (0) | 2025.08.25 |
---|---|
실무 Git 워크플로우 (CLI 중심) (0) | 2025.08.25 |
Git CLI 필수 명령어 정리 (0) | 2025.08.25 |
Git .gitignore 추가해도 stage에 파일이 보이는 경우 (0) | 2024.05.28 |
깃헙을 더 잘쓰는 세가지 팁 (0) | 2021.03.16 |