Stash 명령어 사용하기

반응형

개요

개발을 하다보면 요청으로 인해 현재 작업하던 내용과는 별개의 내용을 확인해야할 때가 있다.
이런 상황은 빈번하게 발생할 수 있는데, 이 때마다 commit 하는 것은 바람직하지 못하다.
(commit 은 하나의 개발 단위로 하는 것이 좋은데, 무분별하게 commit 을 사용하면 commit 이력으로 파악이 어려워지기 때문이다.)
이때 작업한 내용을 임시 공간 에 저장하였다가 다시 불러와서 작업을 이어나갈 수 있게 하는 것이 stash 기능이다.

명령어

1. stash (보관)

git stash

가장 기본적인 작업 내용을 저장하는 명령어이다.
stash 명령어를 사용하면 워킹 디렉토리 에서 수정한 파일들만 저장되며, 워킹 디렉토리 는 비워진다.
stash 는 여러 번 할 수 있으며, stack 구조로 stash 보관소에 저장되게 된다.

stash 할 때 사용자가 stashdescription 을 직접 입력할 수 있다.

git stash save 'description'

description 를 지정하면 stash list 에서 확인 할 수 있다.

git stash save test
stash@{0}: On main: test <<
stash@{1}: WIP on main: 7b2a27f first commit

2. list (리스트 보기)

git stash list

저장된 stash 목록을 확인할 수 있다.

3. apply (불러오기)

git stash apply

저장된 stash 된 작업을 불러와서 워킹 디렉토리로 가져온다.
기본적으로 stash stack의 0번째 stash 를 불러오지만, 사용자가 지정하여 다른 indexstash 를 불러올 수 있다.

예를 들어 stash 의 목록은 다음과 같다.

git stash list
stash@{0}: WIP on main: 7b2a27f first commit
stash@{1}: WIP on main: 7b2a27f first commit
stash@{2}: WIP on main: 7b2a27f first commit

이 중 1번째 indexstash 를 불러오고 싶은 경우 해당 index 를 지정하면 된다.

git stash apply 1

주의사항

워킹 디렉토리에 불러오려는 stash 작업 내역과 충돌나는 부분이 있을 경우 에러가 발생하게 된다.

error: 다음 파일의 로컬 변경 사항을 병합 때문에 덮어 쓰게 됩니다:
        README.md
병합하기 전에 변경 사항을 커밋하거나 스태시하십시오.
... 생략 ...

4. drop (제거하기)

git stash drop

stash 보관소에서 stash 를 제거하는 명령어이다.
apply 명령어와 유사하게 별도의 index 를 주지 않으면 가장 최근의 index 를 제거한다.

특정 index 를 제거하기 위해서는 명령어에 index 를 지정하면 된다.

git stash drop 1
Dropped refs/stash@{1} (0050785318448c374a6b7f3dadd43d9ce949fd44)
반응형