[GIT] git stash

유은서·2024년 2월 28일

GIT

목록 보기
5/5

1) stash

=> 마무리가 덜 된 작업을 commit 하지 않고 임시 보관.
ex) 작업 중 다른 브랜치로 이동하려는 경우

1-1) 수정중이면서 이미 commit하여 관리 대상 상태의 파일

1-2) git add를 실행한 파일

2) 사용방법

2-1) git stash

= 작업 임시 저장
: 새로운 stash를 스택에 만들어 하던 작업을 임시로 저장함.

$ git stash

or

$ git stash save "설명" 

=> 이후 디렉토리는 깨끗해짐.( 다른 브랜치 이동 가능 )

2-2) git stash list

= 임시 저장된 목록 조회

$ git stash list

2-3) git stash apply

= 임시 저장 작업 가져오기

# 가장 최근의 stash를 가져와 적용함.
$ git stash apply

# stash 이름 ex) stash@{0}에  해당하는 stash를 적용함.
$ git stash apply [stash 이름]

2-4) git stash pop

= 임시 저장 작업 가져오면서 리스트 삭제

$ git stash pop

2-5) git stash apply/pop --index

= 이 파일이 staged area에 있는지 아닌지까지의 상태를 불러오기 위함.
: 명령어로 staged area에 올라간 파일의 상태를 불러오지 않으므로

$ git stash pop --index

$ git stash apply --index

2-6) git stash drop

= 임시 저장 내역 삭제
: 주로 apply로 가져온 값이 필요없어진 경우에 사용함.

$ git stash drop
$ git stash drop [stash 이름]

2-7) git stash clear

= 임시 내역 전부 삭제

$ git stash clear

2-8) git stash show -p | git apply -R

= 잘못 stash 적용한 것 되돌림

# 가장 최근의 stash를 사용하여 패치를 만들고 그것을 거꾸로 적용.
$ git stash show -p | git apply -R

# stash 이름에 해당하는 stash를 이용하여 거꾸로 적용.
$ git stash show -p [stash 이름] | git apply -R

alias

= 명령어 등록

$ git config --global alias.stash-unapply '!git stash show -p | git apply -R'
$ git stash apply
$ #... work work work

#alias로 등록한 stash 되돌리기 명령어
$ git stash-unapply

3) 주의사항

  • GIT에서 관리되고 있는 파일만 임시저장 할 수 있음.
    : Untracked files 상태는 불가
    -u 옵션을 사용한다면 Untracked files 파일도 임시 저장할 수 있음.

  • 일시적인 저장
    : 영구적 저장해야하는 변경사항은 commit 필요.

  • 변경사항의 충돌
    : pot 혹은 apply 사용 시, 워킹 디렉토리의 현재 상태와 stash된 변경사항이 충돌할 수 있음 ( => 수동 해결 필요 )

  • 스테이징 영역의 상태
    : git stash를 사용하면 워킹 디렉토리의 변경사항 뿐만 아니라 스테이징 영역(git add) 의 상태도 저장됨

0개의 댓글