Git stash 란? 언제 사용할까?

Yong·2023년 5월 2일
1

Git stash 란?

Git stash는 변경사항을 일시적으로 저장하는 기능으로, 아직 커밋하기엔 이른 경우나 다른 브랜치로 체크아웃할 때 변경사항을 유지하고 싶을 때 사용할 수 있습니다. 또한 변경사항을 일시적으로 저장하고 나중에 다시 사용할 수 있습니다.

stash를 사용하는 이유

👉 Git stash를 사용하는 이유는 다음과 같습니다.
  • 변경사항을 커밋하기엔 아직 이른 경우
  • 다른 브랜치로 체크아웃할 때 변경사항을 유지하고 싶은 경우
  • 변경사항을 일시적으로 저장하고 싶은 경우

stash를 사용할 수 있는 상황 예시

A 브랜치에서 작업을 하다가 변경사항들을 commit 하지 않고 B 브랜치로 checkout 하고 싶을 때.

만약 이런 상황에서 B 브랜치로 checkout 하면 아마도 아래와 같은 에러 메시지를 보게 될 겁니다.

error: Your local changes to the following files would be overwritten by checkout:
        application/controllers/Login.php
Please commit your changes or stash them before you switch branches.
Aborting

아직 commit 하고 싶지 않거나 준비되지 않았을 때, git stash를 사용해볼 수 있습니다.

git 명령어

git stash

git stash git statsh save
현재 작업 중인 변경 사항을 일시적으로 저장하고, 작업 디렉토리를 깨끗한 상태로 만듭니다. 이 때, 저장한 변경 사항은 스택에 쌓이게 됩니다.

git stash save "작업 중인 기능 개발 중"

git stash pop

git stash pop
git stash pop {index 번호}
스택에 쌓인 가장 최근의 변경 사항을 불러와 작업 디렉토리에 적용합니다. 이 때, 스택에서 해당 변경 사항은 제거됩니다.

git stash apply

git stash apply
스태시를 적용한 후에도 스태시가 적용되어 있는 상태를 유지합니다. 임시 저장공간에서 삭제되지 않습니다. 이에 대해 추가 작업을 수행하려면 다시 git stash 명령어를 실행해야 합니다.
만약 브랜치마다 적용을 하고싶다면 git stash apply를 활용할 수 있습니다.

git stash list

git stash list
현재 stash들의 목록을 확인할 수 있습니다.

stash list를 보면 stash@{0} 이렇게 인덱스 번호가 매겨지는 것을 확인해볼 수 있습니다.

profile
If I can do it, you can do it.

0개의 댓글