aeFactory
[Git] git checkout switch restore - 브랜치를 옮기고 수정 사항을 복원하는 법 본문
1. checkout switch restore를 함께 다루는 이유
2. switch
3. restore
4. checkout
1. checkout switch restore를 함께 다루는 이유
이 글에서는 $git checkout
, $git switch
, $git restore
의 세 가지 명령어의 사용법에 대해 정리합니다. 세 가지 명령어를 동시에 다루는 이유는 checkout의 역할을 3가지로 쪼개 checkout, switch, restore가 나누어 하도록했기 때문입니다. 지금 switch나 restore를 써야할 곳이 checkout을 쓴다고 동작하지 않는 것은 아니지만 한 명령어는 한 가지 기능만 갖는 것이 좋기 때문에 분리하여 사용하는 것이 좋다고 생각합니다.
2. switch
switch 명령어는 브랜치를 이동하는데 쓰입니다. 새 브랜치를 만들면서 해당 브랜치로 이동할 수도 있습니다.
옵션 | 기능 |
$git switch <브랜치_이름> |
브랜치를 옮김 |
$git switch -b <브랜치_이름> |
HEAD에 새 브랜치를 만들고 브랜치를 옮김 |
$git switch - |
이전에 있던 브랜치로 다시 이동 |
$git switch -c <브랜치_이름> <commit_hash> |
특정 커밋에서 새로운 브랜치를 만들고 브랜치를 옮김 |
3. restore
restore는 파일을 복원할 때 사용하는 명령어입니다. 파일의 수정 내용이 있을 때 이를 원래대로 복원하고 싶을 때 사용할 수 있습니다. add로 staging area로 넘어간 수정사항도 reset 명령어를 사용하지 않아도 복원 가능합니다.
옵션 | 기능 |
$git restore <pathspec> |
특정 파일의 수정 사항을 기존 커밋 상태로 복원 |
$git restore --staged <pathspec> |
특정 파일의 staging된 수정 사항도 기존 커밋 상태로 복원 |
4. checkout
자료 조사에 따르면 $git checkout
명령어는 $git switch
와 $git restore
로 완전히 분리, 대체된 것으로 보입니다. 하지만 특정 commit으로 checkout하던 $git checkout <commit_hash>
의 경우 $git switch
로는 동작하지 않았습니다. 동작방식으로만 보면 $git switch -c
를 사용하는 것과 같지 않을까 생각할 수 있지만 $git checkout <commit_hash>
의 경우 해당 커밋에 임시 브랜치를 만들어 detached HEAD 상태를 야기하고 원래 브랜치로 switch할 경우 그 임시 브랜치의 경우 남지 않지만 $git switch -c
의 경우 새로 만든 브랜치가 그대로 남게 됩니다. 해당 명령어가 정상적인 git 사용 방식에서는 필요 없기 때문에 사라진 것인지 현재 제 학습 수준으로는 알 수 없었습니다.
'Git' 카테고리의 다른 글
[Git] commit message convention - 커밋 메시지 컨벤션 (0) | 2023.05.18 |
---|---|
[Git] git stash - 깃 작업 내용을 임시 저장하는 법 (0) | 2023.05.16 |
[Git] HEAD - 현재 브랜치의 최신 커밋 (0) | 2023.05.15 |
[Git] 깃의 3가지 작업 영역과 파일의 상태에 관한 LifeCycle (0) | 2023.05.14 |