dukDukz
git checkout / switch / restore 본문
git checkout
checkout이 대체된 이유는 하나의 명령어가 가진 기능이 너무 많기 때문이다.
git 2.23.0 문서에서 checkout의 기능을 명확히 분리한 것을 확인할 수 있다.
- checkout: Switch branches or restore working tree files (브랜치를 변경하거나 파일을 복원)
- switch: Switch branches (브랜치를 변경)
- restore: Restore working tree files (파일을 복원)
쉽게 보자면...
git checkout = git switch + git restore
1. git switch
checkout 기능 중 브랜치를 변경하는 부분만 담당함.
1) 브랜치 변경하기
git switch develop
2) 브랜치 새로 생성하면서 변경하기
이전에는 git checkout -b devleop 이런식을 작성했다면
git switch -c devleop
-c 옵션으로 새로운 브랜치를 만들어주면서 브랜치 변경이 가능하다.
3) 특정 커밋에서 새로운 브랜치 만들기
git switch -c new-branch 515c633a
# 유의할 점
- switch : local 에 있는 브랜치로만 이동 가능
- checkout : remote에 있는 브랜치(원격 브랜치)로도 이동 가능
2. git restore
checkout 중 워킹 트리의 파일을 복원 하는 부분을 담당한다.
1) 파일 수정 내용을 복원하는 경우
(이미 수정한걸 이전 상태로 원복하는 것)
git restore README.md
vscode에서 직접 discard file changes 해도 된다.
2) git add 취소하는 경우
git add를 해서 수정한 내용을 stage에 이미 넣었는데 이걸 되돌리는 경우
git restore --staged README.md
이러면 git add 만 취소가 되고 수정된 상태로 돌아온다.
이 상태에서 git restore README.md 를 한번 더 하면 수정 전 상태로 원복되는 것.
참고 블로그
'웹 개발 > Git | Github' 카테고리의 다른 글
[git error] error: cannot lock ref 'refs/remotes/origin/****': 'refs/remotes/origin/*****' exists; cannot create 'refs/remotes/origin/*****/+++++' (0) | 2023.05.18 |
---|---|
github 계정 여러개 사용하기 - ssh 사용 (0) | 2023.03.17 |
이 저장소에서 다른 git 프로세스가 실행중인 것 같습니다. (0) | 2022.07.08 |
git stash (0) | 2022.06.16 |
git remote update (0) | 2022.05.27 |