※ 출처 - 네이버 사전
git stash
도 위의 사전적 의미와 같은 기능을 하고 있다. 과연 git에서의 stash는 어떤 것을 넣어두는 건지 알아보도록 한다.git stash
라는 명령으로 해결할 수 있다.” 라고 설명하고 있다.git stash
명령을 사용하게 되면 스택으로 새로운 보관장소 stash가 추가되고 현재 Working directory에서 작업중이었던 파일들을 추가된 stash에 보관한다.stash@{id}
라는 명칭을 사용한다.stash@{0}
, 그 전에 추가된 stash는 stash@{1}
, 또 그 전에 추가된 stash는 stash@{2}
같은 패턴으로 id를 넘버링 한다.※ 마지막에 추가된 stash의 id는 0번이다.
※ LIFO 방식에 따라 stash 스택에 새롭게 추가된 stash는 0번 id를 갖는다.
git stash => 모든 작업 파일 보관
git stash push / git stash push [파일명] => 모든 작업 파일 또는 특정 파일만 보관
공통 옵션 -m "메세지" => 메세지 남김
git stash
명령어를 사용하여 현재 수정중인 작업파일들을 stash에 보관 할 수 있다.git stash
명령어를 입력하면 현재 인덱스(Staging area) 및 작업 디렉토리(Working Directory)에 존재하는 추적 가능하고 수정된 모든 파일이 stash에 보관된다.git stash push [파일명]
명령어를 사용하여 특정 파일만 stash에 보관할 수도 있다.-m "메세지"
가 있으며 메세지를 남길 수 있다.※ LIFO 방식에 따라 마지막에 추가되었던 stash의 내용을 먼저 가져온다.
그리고 git stash pop
을 사용했으므로 해당 stash는 삭제되고, 밑에 있던 stash가 0번 id를 갖는다.
가져온 모든 내용은 작업 디렉토리로 돌아가게 된다.
git stash apply => 마지막에 추가된 stash 내용을 가져옴
git stash apply stash@{id} => 특정 stash 내용을 가져옴
---------------------------------------------------------------------------
git stash pop => 마지막에 추가된 stash 내용을 가져오고 해당 stash 제거
git stash pop stash@{id} => 특정 stash 내용을 가져오고 해당 stash 제거
git stash apply
명령어는 stash 스택에서 마지막에 추가된 stash의 내용, 그러니까 stash@{0}
을 가져온다.stash@{id}
를 입력한다면 특정 stash의 내용을 가져올 수도 있다.git stash pop
명령어는 stash의 내용을 가져오고 그 stash를 stash스택에서 제거까지 해주는 동작을 한다.stash@{id}
를 붙이면 특정 stash의 내용을 가져오고 제거까지 하게 된다.
- *a라는 브랜치에서 one.txt파일을 수정 및 저장
- staging area에 추가
- stash에 수정사항을 보관
- b라는 브랜치로 이동하여 stash의 내용을 가져옴
- a가 아닌 현재 b 브랜치, 그리고 staging area가 아닌 작업디렉토리로 one.txt파일의 수정사항이 불러와짐*
git stash list => 현재 stash 스택에 저장된 stash목록을 조회
---------------------------------------------------------------------------
git stash show => 가장 최근에 추가된 stash에 저장된 파일명을 확인
git stash show stash@{id} => 특정 stash에 저장된 파일명을 확인
공통옵션 -p => 내용 변경사항까지 확인
git stash drop => 가장 최근에 추가된 stash 제거
git stash drop stash@{id} => 특정 stash 제거
---------------------------------------------------------------------------
git stash clear => 모든 stash 제거