본문 바로가기
INFRA/DevOps

[Git] switch/restore

by BTC_One 2024. 2. 28.

안녕하세요 BTC-1tier팀의 One입니다

오늘은 Git의 Switch와 restore 명령어에 대해서 알아보겠습니다.

 

여러분은 Git의 Checkout 명령어를 아시나요?

아마 Git을 자주 사용하시는 분이면 굉장히 익숙한 명령어일텐데요

 

문제는 이 Checkout이라는 하나의 명령어가 가진 기능이 너무 많습니다.

checkout은 branch 생성 및 전환할 수 있는 기능과,

커밋 이후로 파일이 변경되었을 시, 최근 커밋 기준으로 파일을 되돌리는 기능을 가지고있는데요

 

이 명령어를 대체하기 위해 Git 2.23부터 switch restore가 도입되었다고 합니다.

세가지 명령어의 기능을 간단히 정리하면 다음과 같습니다.

명령어 실행
checkout Switch branches or restore working tree files
switch Switch branches
restore Restore working tree file 

 

switch와 restore 명령어에 대해 조금 더 자세히 알아보도록 할까요?

 

Switch

switch는 checkout에서 브랜치를 변경하는 부분만 담당합니다.

git switch master

checkout의 -b 옵션처럼 -c 옵션으로 브랜치 생성 후 바로 전환이 가능합니다.

git switch -c new-branch

특정 브랜치나 커밋에서 새로운 브랜치를 만들고 싶으면, 브랜치 이름 뒤에 커밋을 지정해주면 됩니다.

git switch -c new-branch [commit-hash]

 

Restore

restore는 워킹 트리의 파일을 복원해주는 역할을 합니다.

파일의 수정 내용을 복원하기 위해 git checkout [파일명]을 사용했습니다.

 

위 명령어보다 더 명확한 restore 명령어를 사용할 수 있습니다. 

git restore README.md

git add를 통해서 수정 내용을 이미 stage에 넣은 경우, 다시 빼려면 git reset HEAD [파일명]을 사용했어야 했지만,

이 과정도 restore 명령어를 통해 해결이 가능합니다.

git restore --staged README.md

 

최근에 git checkout 명령어를 사용하면서, 파일을 원상복구 하는 과정에서

파일명과 동일한 branch로 전환되어 곤란한 경우가 있었는데요

 

이러한 상황을 방지하기위해 switch와 restore를 사용하면 좋겠죠??

다음 포스팅에서 만나요~

 

베바👋

'INFRA > DevOps' 카테고리의 다른 글

Deployments 와 StatefulSets  (0) 2024.04.17
[K8S] Rollout  (0) 2024.01.08
[DevOps] Log4j 보안취약점 및 해결 방법  (0) 2023.12.29
[DevOps] Log4j 란?  (1) 2023.12.29
[K8S] ConfigMap  (1) 2023.12.08

댓글