ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Github] Stash란?
    Github 2020. 11. 24. 22:48

    Git을 사용하다 보면 한 번쯤은 그럴 때가 있을 것이다.

    우리가 주로 변경사항을 커밋할 때에는, 어떠한 기능이 완성되거나 완료되었을 때 주로 하기 때문에

    지금 작업하고 있는 내용이 있는데, 다른 브랜치로 체크아웃 해야 할 때,

    변경이 완료되지 않았을 때, 커밋하기는 애매한 상황이 되어버린다.

    그렇다고 지금까지 변경한 내용을 커밋하지 않으면, 저장되지 않기 때문에 다시 작업해야만 한다.

     

    이럴 때에 이용되는 것이 바로 stash다.

    stash는 현재까지 Working Tree에서 작업한 내용을 커밋하지 않고, 

    별도의 저장소에 저장하는 명령어이다.

    그러므로 stash 명령어를 실행하면, Working Tree가 HEAD의 위치로 돌아가 깨끗해진다.

     

    이러한 점은 다른 브랜치에서 rebase를 실행하거나 병합 시 충돌 해결에도 요긴하게 이용될 수 있다.

    예를 들어 마스터 브랜치에서의 변경 사항을 rebase 했는데, 현재 브랜치의 변경 사항과 충돌한다면,

    지금까지의 변경 사항을 stash하여 저장한 뒤, rebase하여 충돌 지점을 수정한 뒤,

    다시 stash에서 가져오면 병합하기에 쉬울 것이다.

     

    stash의 필요성에 대하여 알아봤으니, 다음은 stash의 사용법에 대해 알아보자.

    우선 아무데나 Helo라는 문장을 적어보았다.이걸 커밋하기엔 확실히 애매하다.

    현재 Working Tree는 수정된 상태.

    여기서 git stash를 실행하여 Working Tree는 깨끗해졌다.

    git stash list를 실행하면 현재까지 실행된 stash의 목록을 확인할 수 있다.

    git stash apply를 실행하면 stash에 저장된 변경사항을 불러와 적용한다.

    git stash pop을 실행하면 변경 사항을 불러온 뒤, stash 목록에서 삭제한다.

     

    git stash save "stash 이름"          : 해당 이름으로 stash를 저장한다.

    git stash pop "stash 이름"        :stash list에서 왼쪽에 표시된 stash 이름에 해당하는 stash를 pop 한다.   

Designed by Tistory.