checkout 명령어가 지원하는 기능은 두 가지이다.
1. branch 변경
2. 파일 변경 사항(커밋) 복원
한 명령어가 두 가지 이상의 기능을 하게 되면 명령어를 쓸 때 목적이 분명히 드러나지 않는다. 그래서 Git 2.23 이후로 branch 변경은 switch로 하고, 파일 변경 사항 복원은 restore을 사용하게끔 명령어가 추가되었다.
switch, restore 명령어 발표와 함께 게시된 글 Highlights from Git 2.23 을 보면 해당 내용이 기재되어있다. 명령어 사용 방법과 예시도 나와있으니 한 번 읽어보길 바란다.
git checkout
기존 checkout의 기능이다. 브랜치 생성/이동, 파일 복구 모두 지원한다.
- 현재 branch를 변경
$ git checkout [branch]
- -b 옵션과 함께 사용하면, branch를 새로 생성한 후 현재 branch를 새로 생성한 branch로 변경할 수 있다.
$ git checkout -b [branch]
- branch 이름을 두 개 주면 특정 branch에서 새 branch를 생성한 후, 현재 branch를 새로 생성한 branch로 변경할 수 있다.
$ git checkout -b [new-branch] [root-branch]
- file 이름을 주면 특정 file을 HEAD 커밋 기준으로 복원할 수 있다.
$ git checkout [file]
git switch
브랜치를 변경하는 명령어
- 현재 branch를 변경
$ git switch [branch]
- -c 옵션을 사용하면, branch 생성 후 현재 branch를 생성한 branch로 변경할 수 있다. (checkout에서는 -b로 branch라는 것을 명시했는데 switch를 쓰면서 create의 -c로 바뀌었다. 새로 생성한다는 의미가 잘 전달되는 것 같다.)
$ git switch -c [branch]
- branch 이름을 두 개 주면, 특정 branch에서 branch 생성 후 현재 branch를 새로 생성한 branch로 변경한다.
$ git switch -c [new-branch] [root-branch]
git restore
파일을 복원하는 명령어
- 특정 파일을 HEAD 커밋으로 복원
$ git restore [file-name]
- 특정 파일을 특정 커밋으로 복원
- --source 옵션으로 복구 대상 source(commit)을 지정해준다.예를 들어 git restore --source HEAD a.txt 또는 git restore --source 7abc3de a.txt와 같이 쓰인다.
- [commit-hash]에는 커밋해시를 나타내는 HEAD값이 들어갈 수도 있다.
$ git restore --source [commit-hash] [file-name]
- stage의 내용을 HEAD 커밋으로 복원
- --staged 옵션을 주면 git add에 의해 Staging Area에 올라갔던 파일을 다시 Unstaging Area로 옮길 수 있다.
$ git restore --staged [file-name]
'Git' 카테고리의 다른 글
[Git] On branch main nothing to commit, working tree clean (0) | 2024.09.09 |
---|---|
[Git] Git 영역 (working directory / staging area / repository), Git add를 하는 이유 (0) | 2024.09.09 |