Will find a way

Stash : 작업 중인 변경사항을 임시 저장 본문

Git

Stash : 작업 중인 변경사항을 임시 저장

Jaka_Park 2025. 6. 20. 15:25

들어 가기 전

프로젝트를 진행하며 깃을 관리하는 도중 git checkout을 하고 싶은 경우가 있다. git 명령어를 잘 모를 때는 commit을 하고 checkout을 하는 번거로운 작업을 해야만 했다. 임시로 사용할 commit이라 커밋 내용은 애매한 내용을 저장하는 방법밖에 몰랐다. 그래서 다시 checkout을 하여 커밋 내용을 수정하거나 삭제하여 커밋을 수정하기도 했다. 그러던 중 임시 저장을 하는 'Stash'라는 깃 명령어를 알게됐다. 오늘은 이 stash에 대해서 알아보자.

 

 

git stash 란?

현재 작업 중인 변경사항(수정된 파일, 생성된 파일) 을 임시로 "숨겨놓는" 기능이다.

stash : 숨기는 장소를 의미 (영어 사전 참고)

 

stash를 하게 되면

- 커밋하지 않아도 된다.

- 워킹 디렉토리를 깨끗하게 비울 수 있다

- 나중에 다시 꺼내서 이어서 작업 가능하다

 

stash를 쓰는 상황

상황 사용 이유
다른 브랜치로 급하게 이동해야 할 때 작업 중인 변경사항이 있으니 checkout이 안됨
-> stash로 잠깐 저장
코드 실험하다가 원상복구 하고 싶을 때 저장은 하되 커밋은 하기 싫을 수도 있음
임시 저장하고, 나중에 다시 이어서 작업하고 싶을 때 나중에 꺼내서 계속 작업 가능

 

기본 사용법

1) 저장

git stash

 

-> 현재 수정/추가된 파일 전체를 stash에 넣고 작업 디렉토리는 깨끗해짐

 

2) 목록 보기

git stash list

 

(출력 예시)

stash@{0}: WIP on main: 123abc 작업중
stash@{1}: ...

 

3) 꺼내기(pop)

git stash pop

 

-> 가장 최근 stash 항목을 꺼내서 다시 적용함 + 해당 stash 항목은 삭제됨

 

4) 되돌리기 (apply)

git stash apply

 

5) 특정 stash 꺼내기

git stash pop stash@{1}

 

6) stash 삭제

git stash drop stash@{1}

 

7) 전체 삭제

git stash clear

 

예시 시나리오

일어날 수 있는 시나리오와 stash 활용 예시를 알아보자.

1) 파일 수정 중이다.

2) 갑자기 다른 브랜치로 가서 버그 고쳐야 한다

3) 버그를 고치고 푸시한다.

이 과정을 이해하고 흐름대로 명령어를 작성해보자.

git stash
git checkout hotfix-branch

git checkout 원래-브랜치
git stash pop // 다시 내 작업 이어서

 

 

주의할 점

- stash는 작업 내역을 임시 저장소에 저장하는 것일 뿐, 영구 보관이 아니다

- 실수로 stash clear 하면 되돌릴 수 없음

- untracked files (추적되지 않는 파일) 은 기본으로 stash 안됨 -> git stash -u 써야한다.

'Git' 카테고리의 다른 글

cherry-pick : 특정 커밋을 골라서 따오고 싶어!  (0) 2025.05.07
Git Hub 으로 협업하기  (0) 2025.04.30
브랜치와 커밋 분리 (git branch 실수)  (0) 2025.04.12
[Git] git 브랜치  (0) 2024.05.09
[Git] Git 명령어  (0) 2024.05.08