Git Checkout 대신 Switch & restore 사용하기

DongHwan·2021년 9월 5일
0

Git

목록 보기
7/12

git-checkout - Switch branches or restore working tree files

Git Reference에 따르면 Git Checkout 명령어의 역할은 브렌치를 바꾸거나, 워킹 트리의 파일을 복원하는 것이다. 그런데 하나의 명령어가 두가지의 일을 한다. 하나의 명령어가 여러개의 일을 하는 것은 복잡하다고 판단한 Git에서는 Checkout을 Switch와 Restore 명령어로 나누어버렸다.

Switch

git-switch - Switch branches

브렌치를 바꾸는 역할은 Switch가 맡게 되었다.

git switch <branch_name>

현재 브렌치를 변경하는 것은 기존의 checkout과 동일하게 사용할 수 있다.

git switch -c <new_branch>

단, 브렌치를 새로 만들면서 변경하는 것은 기존의 -b 옵션이 아닌 -c 옵션이 되었다.

Restore

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

profile
날 어떻게 한줄로 소개해~

0개의 댓글