[TIL] git restore, stash

minhyuk_ko·2022년 1월 21일
0

로컬 git저장소에서 작업을 하다 급하게 hotfix 혹은 다른 브랜치에서 작업을 해야하는 경우가 드물게 발생한다. 이런 경우 작업하던 브랜치를 전부 staging 및 커밋을 하여 다른 브랜치로 이동하여 작업을 하였다.

그러나 해당 브랜치의 작업이 미비하거나 기능적으로 문제가 있는 경우 staging 및 커밋을 하지 않고 다른 브랜치로 이동하여 작업을 하는 방법을 소개한다.

git restore --staged $PATH : 해당 path에 있는 staging 된 파일 및 폴더를 선택하여 unstage시킨다.
git stash : 현재 로컬 git 에서 작업중인 stage 단계 및 unstage 단계에 있는 모든 변화를 임시로 저장 후 가장 최근 커밋으로 이동한다.

stash의 가장 중요한 기능은 커밋되지 않은 변경사항을 스택에 쌓아두고, 이걸 다시 꺼내오는 기능이다.

git stash -m "메세지" : stash를 하면서 동시에 어떤 내용인지 메세지로 남길 수 있다.
git stash list : stash 된 리스트를 불러올 수 있다.
git stash pop : stash 된 리스트의 가장 최근 stash된 내용을 가져옴과 동시에 list에서 삭제한다. (list-pop 개념과 비슷)
git stash show stash@{0} : 선택한 stash의 내용을 확인할 수 있다.
git stash apply stash@{0} : 선택한 stash의 내용을 현재 브랜치 작업으로 가져온다. (list에서 삭제X)
git stash drop stash@{0} : 선택한 stash를 stash list에서 삭제한다.
git stash branch 브랜치이름 : 선택한 stash 내용을 새로운 브랜치로 만든다.
git stash save : 가져온 stash에서 변경사항을 추가하여 저장한다.
git stash apply/pop --index : 가져온 stash에서 staged된 파일들과 unstaged된 파일들을 그대로 가져온다.
git stash clear : stash list에 저장된 모든 내용을 삭제
git stash -k : stash할 때 stage단계와 unstage 단계를 구분하여 저장
git stash -u : untracked file도 stash 내용에 포함하여 저장

잘못된 stash 내용을 가져왔을 때 다시 되돌리고 싶은 경우
git stash apply/pop --reverse

profile
BE Developer

0개의 댓글