Windows/유용한 풀그림

[Git] switch와 checkout 명령간의 차이점

채윤아빠 2022. 1. 12. 00:27

개요

Git의 switch와 checkout 명령은 브랜치를 전환하는 기능은 동일하지만, 몇 가지 중요한 차이점이 있습니다.

 

두 명령을 세부 기능별로 알아 보겠습니다.


주요 차이점 요약

차이점 checkout switch
Git 버전 초기부터 존재 Git 2.23 이후에 도입
목적의 명확성 다목적 명령어로 여러 기능을 포함함 브랜치 전환에만 특화되어 명확함
파일 복원 기능 파일 복원 가능
(작업 트리의 변경사항을 버리고 이전 상태로 복원)
없음
사용 권장 하위 호환성 ; 여전히 많은 개발자가 checkout 사용 브랜치 전환에 switch, 파일 복원에 restore 사용을 권장

기본 기능 비교

1. 브랜치 전환

switch: 브랜치 전환에 특화된 명령어입니다. git switch branch-name
checkout: 브랜치 전환 뿐만 아니라 다양한 기능을 포함합니다. git checkout branch-name

2. 브랜치 생성

switch: -c 옵션으로 새 브랜치 생성 후 전환. git switch -c new-branch
checkout: -b 옵션으로 새 브랜치 생성 후 전환. git checkout -b new-branch

3. 파일/경로 복원

switch: 파일을 복원하는 기능이 없음
checkout: 작업 디렉토리의 파일 복원 가능. git checkout -- file.txt

4. 커밋 체크아웃

switch: -d 옵션으로 커밋 체크아웃 가능 (detached HEAD). git switch -d commit-hash
checkout: 커밋 해시로 직접 체크아웃 가능. git checkout commit-hash


세부 옵션 비교

switch 명령의 주요 옵션

  • -c, --create: 새 브랜치 생성 후 전환
  • -C, --force-create: 기존 브랜치가 있더라도 강제로 새로 생성 후 전환
  • -d, --detach: detached HEAD 상태로 특정 커밋으로 전환
  • --discard-changes: 작업 디렉토리의 변경사항 무시하고 전환
  • --merge: 현재 변경사항을 병합하며 전환
  • --quiet: 출력 메시지 최소화

checkout 명령의 주요 옵션

  • -b: 새 브랜치 생성 후 전환
  • -B: 기존 브랜치가 있더라도 강제로 새로 생성 후 전환
  • --detach: detached HEAD 상태로 전환
  • -f, --force: 작업 디렉토리의 변경사항 무시하고 전환
  • -m, --merge: 현재 변경사항을 병합하며 전환
  • -q, --quiet: 출력 메시지 최소화
  • --: 파일 경로 복원을 위한 구분자 (예: git checkout -- file.txt)
  • --patch: 변경사항을 대화형으로 선택하여 복원

맺는말

Git의 사용성을 개선하기 위하여, checkout의 기능을 switch와 restore 명령으로 명확하게 분리하는 방향으로 도입 되었습니다.



728x90
반응형