하던 작업을 임시로 저장 해두고 싶을 때 사용하는 커맨드
git stash
- 현재
dev
브랜치에서 열심히 작업 도중 급한 요청이 들어와 현재 작업을 멈추고feather/api
브랜치를 새로 만들어서 API 를 만들어야 한다.- 그럼 이전에
dev
브랜치에서 작업하던 것은 어떻게 해야할까?
- 그럼 이전에
그럴때 사용하는 것이 git stash
이다.
git stash
명령을 사용하면 working directory에서 수정한 파일들만 저장- stash 란 아래에 해당하는 파일들을 보관해두는 장소
-
Modified
이면서Tracked
상태인 파일Tracked
상태인 파일을 수정한 경우Tracked
: 과거에 이미 commit 하여 스냅샷에 넣어진 관리 대상 상태의 파일
-
Staging Area
에 있는 파일 (staged 상태의 파일)git add
명령을 실행한 경우- staged 상태로 만들려면
git add
커맨드 사용
-
하던 작업 임시로 저장하기
새로운 stash를 스택에 만들어 하던 작업 임시로 중단
- 파일 1개를 staging area 에 추가 (
git add
) -
$ git status On branch main Changes to be committed: (use "git restore --staged <file>..." to unstage) new file: 02_토요코인 객실 모니터링/main.py
git stash
명령어 실행
git stash
git stash save
$ git stash
Saved working directory and index state WIP on main: 843b3ce [UPD]: Update requirements.txt
stash 목록 확인
$ git stash list
stash@{0}: WIP on main: 843b3ce [UPD]: Update requirements.txt
stash 적용
- 이전 작업 다시 불러오기
# 가장 최근 stash 가져와 적용
$ git stash apply
# stash 이름 (stash@{1}에 해당하는 stash 적용)
$ git stash apply [stash 이름]
그러나 위의 명령어 만으로는 Staged
상태였던 파일을 다시 자동으로 Staged
상태로 만들어 주지는 않음.
- --index 옵션 사용
# Staged 상태까지 저장
$ git stash apply --index
stash 제거
# 가장 최근의 stash 제거
$ git stash drop
# stash 이름 (stash@{1}에 해당하는 stash 제거)
$ git stash drop [stash 이름]
# 모든 stash 제거
$ git stash drop $(git stash list | awk -F':' '{print $1}')