ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Git 교과서 02 (임시처리)
    Git Github 2021. 12. 15. 20:13

    스태시

     

    작업 브랜치를 변경하려면 워킹 디렉터리는 깨끗한 상태로 정리되어 있어야 한다. 하지만 긴급하게 브랜치를 변경해야 하는 경우 스태시(stash)기능을 사용하여 현재 수정 작업을 멈추고, 다른 브랜치에 있는 코드를 수정할 수 있다.  

     

    스태시는 '현재 워킹 디렉터리 내역을 별도의 스택 영역에 잠시 보관하라'는 명령이다. 브랜치를 이동할 때 워킹 디렉터리가 충돌하는 것을 방지한다. 

     

    $ git stash

     

    git stash save는 스태시 여러 개를 생성할 때 유용하다

    $ git stash save

     

    스태시 작업을 할 때 --keep-index 옵션을 사용하여 스테이지 영역의 파일들을 제외할 수도 있다. 등록되지 않은 untracked 상태의 파일을 스태시로 생성하고 싶다면 --include-untracked 옵션을 사용한다.

     

    스태시의 저장 영역은 스택 구조이다. 스태시에 저장된 스택은  list 옵션을 사용하여 확인할 수 있고, 저장된 폴더에서 cat 명령어로 내용을 확인할 수도 있다.

    $ git stash list
    $ cat .git/refs/stash

     

     

    임시 저장된 내용은 다른 수정 작업을 완료한 후에 다시 불러와 사용할 수 있다. 스태시 명령어 뒤에 pop 옵션을 추가한다.

    $ git stash pop

     

    스태시는 스택에서 내용을 읽어올 때 현재 브랜치의 워킹 디렉터리와 자동으로 병합한다. 자동 병합이 성공하면 읽어 온 내용을 스택에서 제거한다.

     

    스태시를 복원할 때 같은 파일에서 동일한 부분을 변경했다면 충돌이 발생한다. 복원하는 도중 충돌이 생기면 스택에 저장된 내용을 자동으로 삭제하지 않는다. 

     

     

     

    스태시 스택에 저장된 내용으로 새로운 브랜치를 동시에 생성할 수 있다.

    $ git stash branch 브랜치이름

     

    apply 옵션을 이용하여 스태시 스택에 저장된 항목을 어느 브랜치에서나 복원 가능하다.

    $ git stash apply

     

    스태시 복원은 pop과 apply 두개를 제공한다. pop 명령어는 내용을 복원 후 스택 목록에서 자동으로 삭제한다. 즉, 이동하는 것과 같다. apply 명령어는 자동으로 삭제하지 않기 때문에 복사하는 것과 같다.  

    apply는 pop과는 달리 마지막 작업 내용이 아니라, 스택 목록 중간 작업을 지정하여 적용할 수 있다.

     

     

    충돌이 발생하거나 apply 명령어로 워킹 디렉터리를 복구할 때는 스택에서 삭제되지 않기 때문에 수동으로 삭제해야 한다.

    $ git stash drop

     

     

     

    개발하는 과정에서 불필요한 파일들이 생성된다. 이 파일들을 .gitignore 목록에 넣어 관리할 수도 있지만 clean 명령어를 통해 워킹 디렉터리에 있는 추적되지 않는 파일들을 찾아 삭제할 수 있다. 

    $ git clean
    $ git clean -f    //강제삭제

     

     

     

    'Git Github' 카테고리의 다른 글

    Git 교과서 04 (복귀)  (0) 2021.12.15
    Git 교과서 03 (병합과 충돌)  (0) 2021.12.15
    Git 교과서 01  (0) 2021.12.13
    Git - branch & conflict  (0) 2021.03.08
    Git 버전관리  (0) 2021.03.05
Designed by Tistory.