
※ 출처 - 네이버 사전
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 제거