Will find a way
Stash : 작업 중인 변경사항을 임시 저장 본문
들어 가기 전
프로젝트를 진행하며 깃을 관리하는 도중 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 |