개요
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
반응형
'Windows > 유용한 풀그림' 카테고리의 다른 글
[git] CRLF 변환 설정 (0) | 2022.05.16 |
---|---|
Wake On Lan 사용하기 - WakeMeOnLan (0) | 2022.03.18 |
[Spy++] 마우스 선택(Click) 동작 추적하기 (0) | 2021.12.22 |
Tampermonkey(탬퍼몽키)를 이용한 사이트 기능 확장 (0) | 2021.09.25 |
[tool] sftp 명령 소개 및 사용법 (0) | 2021.08.21 |