git-checkout - Switch branches or restore working tree files
Git Reference에 따르면 Git Checkout 명령어의 역할은 브렌치를 바꾸거나, 워킹 트리의 파일을 복원하는 것이다. 그런데 하나의 명령어가 두가지의 일을 한다. 하나의 명령어가 여러개의 일을 하는 것은 복잡하다고 판단한 Git에서는 Checkout을 Switch와 Restore 명령어로 나누어버렸다.
git-switch - Switch branches
브렌치를 바꾸는 역할은 Switch가 맡게 되었다.
git switch <branch_name>
현재 브렌치를 변경하는 것은 기존의 checkout과 동일하게 사용할 수 있다.
git switch -c <new_branch>
단, 브렌치를 새로 만들면서 변경하는 것은 기존의 -b
옵션이 아닌 -c
옵션이 되었다.
git-restore - Restore working tree files
워킹 트리의 파일을 복원하는 역할은 Restore가 맡게 되었다.
git restore <file_path>
아무런 옵션도 없을 시 워킹 트리의 파일을 index의 파일로 복원한다. 만약 untracked 파일이라면, 제거한다.
git restore [-W | --worktree] [-S | --staged] <file_path>
--staged
와 --worktree
옵션은 복구할 영역을 선택하는 옵션이다.
--staged
옵션이 있다면, 인덱스(스테이징) 영역이 HEAD 커밋의 파일로 복구된다.
--worktree
의 경우 두가지로 나뉜다. --staged
옵션 없이 혼자 사용되면, 워킹 트리의 파일이 인덱스의 파일로 복원된다. 그러나 git restore -S -W file
과 같이 --staged
옵션과 같이 사용되면, 인덱스와 워킹 트리의 파일이 HEAD 커밋의 파일로 복구된다.
git restore [--source <tree>] <file_path>
--source
옵션은 어떤 버전의 파일로 복원할 것인지를 결정한다. git restore --source HEAD~2 README.md
과 같이 명령어를 입력하면, HEAD~2
커밋의 README.md
로 복원된다.
Git - git-checkout Documentation
Git - git-switch Documentation
Git - git-restore Documentation