...
스태시(Stash)
파일의 변경 내용을 일시적으로 기록해두는 영역이다.
아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 한다.
이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리할 수 있다.
예를 들어,
- 파일 수정중 다른 branch로 이동해야하는 상황이 생기거나,
- master브랜치에서 작업해야되는데, 다른 브랜치에서 모르고 작업했을때 stash로 싹 저장하고 master브랜치로 넘어와서 임시로 저장된 작업내용을 적용해주면 유용하게 쓰일수 있다.
git statsh
브랜치 another에서 작업하고 잠시 브랜치 master를 들러야 할 상황이 있다고 가정하자.
cherry파일 내용을 수정하고 바로 master로 checkout하니 error메세지가 나온다.
해석해보면, 파일이 덮어써진다는 에러내용이고,
commit을 하거나 stash를 하라는 조언도 나오는걸 볼 수 있다.
📌 stash 저장
# 현재 작업 수정 내역을 임시저장소에 저장한다.
$ git stash
# 설명도 함께 동봉할 수 도 있다.
$ git stash save "설명"
📌 stash 목록
# statsh 목록
$ git stash list
📌 stash 적용
# 가장 최근의 stash를 가져와 적용한다.
$ git stash apply
# stash 이름(ex. stash@{2})에 해당하는 stash를 적용한다.
$ git stash apply stash@{2}
# 기본 명령어는 staged된 파일을 자동으로 스테이징 처리 안해준다.
# --index옵션을 통해 Staged 상태까지 저장
$ git stash apply --index
📌 stash 삭제
apply 옵션은 단순히 stash를 적용하는 것으로, 해당 stash는 스택에 여전히 남아있다.
스택에 남아 있는 stash는 위의 명령어을 사용하여 제거할 수 있다.
# 가장 최근의 stash를 제거한다.
$ git stash drop
# stash 이름(ex. stash@{2})에 해당하는 stash를 제거한다.
$ git stash drop stash@{2}
# 전체삭제
$ git stash clear
# 가장 최근의 stash를 적용하고 바로 삭제한다.
# apply + drop의 형태
$ git stash pop
📌 stash 롤백
실수로 잘못 stash 적용한 것을 되돌리고 싶으면 위의 명령어를 이용한다.
# 가장 최근의 stash를 사용하여 패치를 만들고 그것을 거꾸로 적용한다.
$ git stash show -p
# stash 이름(ex. stash@{2})에 해당하는 stash를 이용하여 거꾸로 적용한다.
$ git stash show -p [stash 이름]
Reference
https://velog.io/@byeol4001/git-stash-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.