git switch
와 git checkout
은 Git에서 브랜치를 전환하거나 작업 트리(working tree)를 변경하는 데 사용되는 명령어입니다. 두 명령어의 주요 차이점은 사용 목적과 명령어에 사용되는 옵션들입니다.
git switch
Git 2.23 버전에서 도입된 git switch
는 브랜치를 전환하거나 새로운 브랜치를 만들어 전환하는 것을 목적으로 합니다. 사용자가 해당 명령어만으로 원하는 기능을 이해하고 실행할 수 있도록 직관적인 명령어입니다.
주요 옵션:
-C <브랜치명>
: 이미 존재하는 브랜치로 전환합니다.-c <브랜치명>
: 새로운 브랜치를 생성하고 전환합니다.--detach
: 브랜치를 따로 빼고 커밋되지 않은 변경 사항을 임시로 저장한 후, 주어진 커밋으로 전환합니다.--discard-changes
: 작업 트리에서 변경 사항을 버리고 주어진 브랜치로 전환합니다.git checkout
git checkout
은 브랜치 전환, 커밋 전환, 파일 복구 등의 여러 기능을 수행하는 복합 명령어입니다. 이 명령어는 Git에서 오래 전부터 사용되어 왔으며, 다양한 기능을 수행할 수 있습니다.
주요 옵션:
<브랜치명>
: 지정한 브랜치로 전환합니다.-b <브랜치명>
: 새로운 브랜치를 생성하고 전환합니다.--detach
: 분리된 헤드 상태로 전환하며, 커밋되지 않은 변경 사항을 임시로 저장한 후, 주어진 커밋으로 전환합니다.<커밋>
: 지정한 커밋으로 작업 트리를 변경합니다.<커밋> -- <파일>
: 지정한 커밋 및 파일로 작업 트리의 상태를 변경합니다.--ours/--theirs <파일>
: 파일 병합 시 충돌 해결을 위해 우리의 변경 사항이나 상대방의 변경 사항을 선택합니다.결론적으로, git switch
는 브랜치를 전환하는 목적에 초점을 두어 직관적이고 사용하기 쉬운 명령어입니다. 반면, git checkout
은 브랜치 전환 뿐 아니라 커밋 전환, 파일 복구 등의 여러 기능을 수행할 수 있는 복잡한 명령어입니다. 브랜치 전환만을 목적으로 한다면 git switch
를 사용하는 것이 좋지만, 그 외 다양한 기능들이 필요하다면 git checkout
을 사용해야 합니다.