stash
-
- 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어이다. 이를 통해 아직 완료하지 않은 일을 commit하지 않고 나중에 다시 꺼내와 마무리 할 수 있습니다.
- 작업 도중 커밋을 할 수는 없는 상태지만, 브랜치 전환을 하거나 커밋 변경을 해야할때 임시적으로 저장할 수 있는 명령어 입니다.
-
EXAMPLE
위 상황과 같이 Local repository에 아직 commit을 하지 않은 변경사항이 있을 경우
rebase, merge 혹은 pull로 당겨오게 되면 conflict(충돌)이 일어나서 오류가 나게 됩니다.
이러한 경우에 git stash
를 사용하면 unstaged 상태인 변경사항을 일시적으로 백업하고 Working Directory를 깨끗한 상태로 유지합니다.
git stash를 사용하면 워킹 디렉터리에서 수정한 파일들만 저장합니다.
stash : 워킹 디렉터리의 수정 파일들을 저장하는 장소
- stash 대상
- Modified이면서 Tracked 상태인 파일
- Tracked 상태인 파일을 수정한 경우
- Tracked: 과거에 이미 commit하여 스냅샷에 넣어진 관리 대상 상태의 파일
- staging Area에 있는 파일(즉, git add를 실행한 경우)
- Modified이면서 Tracked 상태인 파일
stash 명령어
- stash 목록 확인하기 : git stash list
$ git stash list
stash@{0}: WIP on master: 049d078 added the index file
stash@{1}: WIP on master: c264051 Revert "added file_size"
stash@{2}: WIP on master: 21d80a5 added number to log
-
git stash apply
: stash 적용하기(작업 가져오기), 가장 최근에 저장한 stash 복원 -
git stash save
: stash에 저장하기git stash save 명칭
: 명칭을 주어 저장
// git stash 옵션 없이 사용
$ git stash
Saved working directory and index state WIP on master: fbe5356 Well, I changed my mind about that renaming
HEAD is now at fbe5356 Well, I changed my mind about that renaming
-
git stash show stash
: 특정 stash의 자세한 내용 보기 git stash drop
: stash 제거하기- git stash apply를 해도 스택에는 남아있기 때문에 위 명령어를 통해 제거해야 합니다.
git stash pop
: git stash apply + git stash drop
-
git stash clear
: stash 기록을 모두 제거 git stash show -p | git apply -R
: stash 되돌리기- 실수로 잘못 적용한 경우에 위 명령으로 되돌릴 수 있습니다.
// 가장 최근의 stash를 사용하여 패치를 만들고 그것을 거꾸로 적용한다.
$ git stash show -p | git apply -R
// stash 이름(ex. [email protected]{2})에 해당하는 stash를 이용하여 거꾸로 적용한다.
$ git stash show -p [stash 이름] | git apply -R
참고
https://gmlwjd9405.github.io/2018/05/18/git-stash.html
https://blog.outsider.ne.kr/788
近期评论