Section 9: 스태시(Stash)의 모든 것

김남훈·2024년 1월 20일

Git & Github

목록 보기
7/18

Critical

Important

Git Stash Basics

Git Stash 는 무슨 일을 하는지 알아보자. 잠시 상상해보자. 지금 저장소에서 작업하고 있고 master 브랜치에 있다고 하자. 아래의 그림과 같은 상황이다.

그리고 커밋한 후 새 브랜치를 만들고 이동한다.

그리고 puppy 브랜치에서 새로운 작업을 하고, 아직 커밋을 하지 않았다.

즉 위의 dog.py 파일은 만들었지만, 커밋하지 않았다. 그리고 master 브랜치로 다시 넘어가야하는 상황이 생겼다고 하자. 이와 같은 상황에서는 두가지 옵션이 있다. 첫째는 커밋하지 않은 작업들이 내가 master 브랜치로 넘어가면 같이 master 브랜치로 넘어온다. 또 다른 옵션은 깃이 내가 브랜치를 이동하지 못하게 하는 것이다.

따라서 Git Stash라는 것은 어떤 브랜치에서 작업을 하다가 다른 브랜치로 넘어갈 때 임시적으로 저장을 해야될 때 사용하는 것이다.(git stash is super useful command that helps you save changes that you are not yet ready to commit.)

** stash: to store or hide something, especially a large amount.

Git Stash Save

git stash (save) 는 stash에 임시 저장을 하는 명령어로 save는 생략 가능하다. 아래의 그림과 같이 stashworking directory에서 하던 작업과 staging area에서의 작업을 임시 보관한다.

Git Stash Pop

git stash pop 은 stash에 가장 최근에 저장된 것을 지우고 현재 작업공간에re-apply 한다. 같은 브랜치나 다른 브랜치에 적용 가능하다.

Nice To Have

Git Stash Apply

git stash apply는 stash 영역에 stash를 남겨둔 채로 git stash pop을 한다. 따라서 여러개의 브랜치에 stash 영역의 stash 들을 적용해야할 때 사용할 수 있다.

Dropping & Clearing The Stash

git stash drop stash@{2} -> 특정 stash 삭제
git stash clear -> 모든 stash 삭제

Working With Multiple Stashes

stash의 스택에 여러 차례 stash를 할 수 있다. 이 때 변경사항들은 스택에 추가하는 순서대로 보관된다. 그러나 대부분은 이렇게 사용할 일이 많이 없고, 99퍼센트 정도는 단순히 git stashgit stash pop 정도를 사용한다. stash에 저장된 stashes들을 보는 명령어는 git stash list이다.

이러한 리스트에서 특정 stash를 지정하여 apply하는 명령어는 git stash apply stash@{2} 이다. 이 때 apply하고자 하는 파일이 비어있는 상태여야 apply를 했을 때 stash@{2}를 적용시킬 수 있다.

profile
안녕하세요

0개의 댓글