ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git - 5.3 Stash
    STUDY/Git & Github 2021. 1. 7. 13:13

    #이 글은 "생활코딩" '프로젝트 관리' 강의를 기반으로 정리한 글 입니다. 

     

    이번에는 Branch의 마지막 내용인 stash에 대해 알아보도록 하겠습니다.

     

    역시나 이번에도 실습을 위해, 새로운 디렉토리를 생성하고 git저장소로 초기화시켜줍니다. f1.txt 파일을 만들어주고, 내용은 "a"로 해준 후 commit을 해줍니다. 이후에, exp branch를 하나 생성한 후 f1.txt의 내용을 "ab"로 조금 수정해줍니다.

     

    이때! 만약, exp에서 f1.txt를 수정하다가, master branch에서 확인할 내용이 있어 수정한 내용을 commit하지 않고, 잠시 branch를 master로 변경하면 어떻게 될까요? commit이나 merge를 하지 않았음에도 exp에서의 수정 내용이,  master branch의 f1.txt의 내용에 영향을 끼친 것을 볼 수 있습니다. 이런 상황이 발생하면 우리가 branch를 사용하는 이유가 없어지게 되는것입니다.

     

    exp에서 수정 내용이, master에도 영향을 끼침

    git status를 통해 현재 상태를 살펴보면, 아래와 같은 메세지를 볼 수 있습니다. 분명 exp에서 수정한 파일이, master에도 영향을 끼치고 있는 것 입니다.

     

    git status

    Branch에서 수정을 하는 중에 잠시 branch를 바꾸더라도, 수정 사항이 다른 branch에게 영향을 끼치지 않게 하려면 어떻게 해야할까요? 

    이때 사용하는 것이 우리가 오늘 알아볼 'Stash'입니다. 

     

    다시 exp branch로 이동해서, f1.txt를 수정하고, git stash (save) 명령어를 실행해 봅시다. 그럼 아래와 같은 메세지가 나옵니다. 

     

    Saved working directory and index state WIP on exp: c63929b 1 ==> WIP(작업 중인) Working 디렉토리와 index의 내용이 exp에 저장되었음.

     

    git status를 통해 현재 상태를 살펴보면, commit할 사항이나 수정된 사항이 없다고 나오는 것을 볼 수 있습니다. stash가 하는 일이 어떤 것인지 이제 아시겠나요? 쉽게 말해 stash는 우리가 수정하였지만 아직 commit이나 add하고 싶지 않은 작업 내용들을 잠시 숨겨주는 역할을 하는 것 입니다!

     

    git stash

    이렇게 stash한 내용을 다시 되돌리려면, git stash apply 명령어를 사용하면 됩니다.

     

    git stash apply

    stash한 것을 다시 되돌린 후에 add와 commit을 한 후에, git stash list   를 보면, 여전히 이전에 stash했던 내용이 남아있는 것을 볼 수 있습니다. 명시적으로 stash를 삭제하지 않는 이상 list에 내용이 남아있게 됩니다. 이렇게 list에 남아있기 때문에 git stash apply로 내용을 다시 되돌릴수 있는 것 이기도 합니다.

     

    git stash list

    새로운 파일 f2.txt를 생성한 후, git stash를 해준 후 다시 git stash list를 살펴봅시다.

    (stash는 버전관리가 되고 있는 파일에 한해 가능하기 때문에 git add를 하지 않으면 stash 되지 않습니다!)

    아래와 같이 두개의 stash가 있는 것을 볼 수 있습니다. 이 중 위에 있는 것이 새로 stash한, 즉 f2.txt를 stash한 것 입니다.

     

    stash한 것을 다시 되돌리려면 git stash apply 를 이용하면 됩니다. 그렇다면, 제일 첫번째 항목을 먼저 apply 하고 다음 항목을 순차적으로 apply 하기 위해선 어떻게 해야할까요? 방법은 두가지가 있습니다. 첫번째는 git stash apply;git stash drop; , 두번째는 git stash pop 이 있습니다. 두 명령어 모두 순차적으로 리스트에 있는 항목을 apply 시켜줍니다. 

     

    git stash list

    마지막으로는 stash list에 존재하는 항목을 삭제하는 방법에 대해 알아보겠습니다. 목록에서 stash를 삭제할 때는,git stash drop 을 이용하면 됩니다.

     

    _____________________________

    지금까지 Git의 혁신이라고 불리는 Branch에 대해 알아보았습니다. 감사합니다.

     

    댓글

Designed by Tistory.