ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • git stash 명령어
    Git 2021. 3. 15. 03:01
    반응형

    아직 다 만들어지지 않은 기능을 commit하기 애매할 때, 스택에 잠시 저장할 수 있게 만든 명령어.

    나중에 다시 스택에서 꺼내서 마무리할 수 있다.

     

    어떤 작업 중에 급한 일이 생겨 다른 브랜치로 변경해야할 때.

    그런데, 하던 작업이 미완성이라서 커밋 하기에는 좀 애매할 때.

     

    - 개인적으로는 이번에 진행 상황(step1, step2, step3)에 따라서 branch를 분리해야 하는 일이 있었는데,

    step3 branch에서 작업해야 하는 내용을 깜빡하고 step2에서 하고 있었다.

    근데 아직 커밋은 하지 않았고 워킹 디렉토리의 파일들만 수정된 상태였기 때문에

    stash에 저장했다가 step3 branch로 바꾸고, stash에서 다시 꺼냈다.

    즉, step2에서 작업하던, 커밋되지 않은 내용들을 step3로 옮기는 데에 사용했다.


    git stash 명령어를 사용하면 워킹 디렉토리에서 수정한 파일들만 저장한다.

     

    stash란 아래의 파일들을 저장해두는 보관소이다.

    1. Modified이면서 Tracked 상태인 파일

        - 한 번이라도 add한 적이 있는 파일

        - Tracked 상태의 파일을 수정한 경우

        - Tracked: 과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태의 파일

    2. Staging Area에 있는 파일(Staged 상태의 파일)

        - git add 명령을 실행한 경우

          (Staged 상태로 만들려면 git add 명령을 실행해야 함)

        - git add는 파일을 새로 추적할 때도 사용하고, 수정한 파일을 Staged 상태로 만들 때도 사용한다.


    1. 하던 작업 임시로 저장하기

    git stash

     

    새로운 stash를 스택에 만들어 하던 작업(커밋하기 애매한 그 작업)을 임시로 저장한다.

    - git stashgit stash save를 사용하면 스택에 새로운 stash가 만들어진다.

    이 때 working directory는 깨끗해진다.

    - 이제, 새로운 작업을 위한 다른 branch로 변경할 수 있다.

     

    2. stash 목록 확인하기

    git stash list

     저장된 stash의 목록을 확인할 수 있는 명령어.

     

    3. stash 적용하기(stash 했던 작업 다시 가져오기)

    git stash apply

     stash 했던 가장 최근의 작업을 다시 가져온다.

     

    git stash apply [stash 이름]

    ex) git stash apply stash@{2}

    - 원하는 stash를 골라서 적용하는 것도 가능하다.

     

    git stash apply --index

    - index 옵션이 없으면, Staged 상태였던 파일들을 자동으로 다시 Staged 상태로 만들어주지 않는다.

    index 옵션을 주어야 Staged 상태까지 복원할 수 있다(원래 작업하던 파일의 상태로 돌아올 수 있다).

     

    4. stash 제거하기

    git stash drop

     apply 명령어는 단순히 stash를 적용하기만 하므로, 해당 stash는 여전히 스택에 남아있다.

    스택에 남아있는 stash를 제거할 때 drop 명령어를 사용한다.

     

    git stash drop [stash 이름]

    ex) git stash drop stash@{2}

     원하는 stash를 골라서 제거할 수 있다.

     

    5. stash 적용하기 + 제거하기

    git stash pop

    apply + drop 역할을 하는 명령어.

    (적용과 동시에 스택에서 제거하고 싶을 때)

     

    6. 새로운 브랜치 생성과 함께 stash 적용

    git stash branch

     stash할 당시의 커밋을 checkout 한 후 새로운 브랜치를 만들고 거기에 적용한다.

    이 모든 것이 성공하면 해당 stash를 스택에서 제거한다.

     

     

     

    참고

     

    git 도구 - stashing 과 cleaning · 초보몽키의 개발공부로그

    Pro Git Book 을 읽고 주요 내용을 정리합니다.

    wayhome25.github.io

     

    [Git] git stash 명령어 사용하기 - Heee's Development Blog

    Step by step goes a long way.

    gmlwjd9405.github.io

     

    반응형

    'Git' 카테고리의 다른 글

    Git cherry-pick  (2) 2021.03.31
    Git merge  (0) 2021.03.26
    .gitignore가 올바르게 작동하지 않을 때 😤  (0) 2021.02.07
    Git 커밋 메시지 컨벤션  (0) 2020.12.30
    수정과 관련된 git 명령어 💡  (0) 2020.12.05

    댓글

Designed by Tistory.