티스토리 뷰

 

Stash: (안전한 곳에) 넣어두다[숨기다]

    보통 한 번에 하나의 이슈만을 처리하면 좋겠지만, 일을 하다보면 여러개의 일을 처리해야 할때도 있고, 특정 브랜치에서 뭔가를 확인해야 할일 도 생긴다. 이 때,  작업중인 내역을 커밋할 수는 없고, 날리기도 아까울 때 필수적으로 사용하게 되는 명령어가 바로 stash 이다. 

 

기본 사용법

1) 저장(save)

save 뒤에 따옴표로 description을 포함하여 저장한다.

$ git stash save '[Feature] ** 작업중'

2) 목록 보기(list)

$ git stash list

위와 같이 저장한 목록은 list 명령어로 볼수 있다. stash는 스택으로 관리된다(FILO/선입후출).

결과는 아래와 같이 출력된다.

 

3) 적용하기(apply)

변경 사항은 apply 명령어로 저장한다. 2)번에서 확인한 목록에서 적용할 목록을 적어주면 된다.

// 0번째 stash를 적용하기 위해서는 단순히 apply 만 사용해도 적용된다.  
$ git stash apply

// 특정 stash를 적용할 때는 다음과 같이 적용한다. 
$ git stash apply stash@{n}

terminal은 git bash를 사용하였다.

4) 사용한 목록 삭제

  • 특정 목록 삭제(drop)

이미 적용했거나, 더 이상 사용하지 않은 stash는 아래 명령어로 삭제한다. 

$ git stash drop stash@{n}

  • 모든 목록 삭제(clear)

아래 명령어를 사용하면 모든 목록이 삭제된다. 주의해서 사용하자. 

$ git stash clear

 

-u: untracked 파일 저장 (필수)

사실 위에 내용만 가지고 사용한다면 stash는 당신이 원하는 대로 동작하지 않을 가능성이 높다. 왜냐하면 stash는 나도 처음에는 모르고 사용하다가 작성중인 파일을 날려먹은 경험이 있다. (눙물ㅠㅠ) 

$ git stash -u
$ git stash --include-untracked

 

--index: staged 상태까지 저장하기 및 불러오기

-u 옵션을 이용해서 모든 타일을 저장했다면 불러올때는 --index를 이용하여 stage 상태까지 불러오기 할 수 있다.

$ git stash apply --index

 

그외 명령어들

1) 적용과 동시에 삭제하기.

계속해서 쌓이는 stash들을 일일이 관리하기 귀찮다면 아래 명령어를 이용해서 사용하면서 삭제할 수 있다. 다만, 바로 삭제됨으로 적용할 stash가 무엇인지 정확하게 적는 것이 중요할 것이다. 

$ git stash pop

2) 되돌리기

stask를 무자비하게 사용하다 보면 해당 브런치에서 불러오지 말아야 할 stash를 불러오기도 한다.   그런데 이 때, 해당 브랜치에 이미 작업하던 내용이 있다면?? restore를 이용해서 변경 내역을 마냥 지울 수도 없는 일이다.  그 때를 위해 다음의 명령어를 기억해두자. 

$ git stash show -p | git apply -R

 

Reference

https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning

 

Git - Stashing과 Cleaning

작업하던 저장소가 완전 지저분해져서 Git에게 진짜로 강제로 정리하도록 해야 하는 경우가 생길 수 있다. 예를 들어 Git 버전관리 데이터가 포함된 디렉토리를 복사해왔거나 서브모듈 디렉토리

git-scm.com

 

이상 꿀팁인지는 모르겠지만, 다양한 stash 사용법을 정리해보았다.

혹시 잘못된 내용 이나 다른 꿀팁 있다면 댓글로 남겨주세요.!