워킹 디렉토리에 작업 중인 내용이나 커밋 되지 않은 변경 사항들이 남아 있으면 브랜치를 변경할 수 없다. 이러한 상황에서 스태시 기능을 사용한다.
간단히 말해 안전한 보관!

스태시는 현재 워킹 디렉토리 내역을 별도의 스택 영역에 잠시 보관하라는 명령으로 현재 작업을 임시로 저장할 수 있다. 브랜치를 이동할 때 작업 중인 내용 때문에 워킹 디렉토리가 충돌하는 것을 방지하는 데 사용한다.
$ git stash
$ git stash save // 여러 개의 스태시를 생성할 때 유용
$ git stash save "WIP: 메시지~" // 스태시 구별 메시지 추가 가능
$ git stash --keep-index // 스테이지 영역 파일 제외하고 스태시 생성
$ git stash --include-untracked // untracked 파일 스태시로 생성 (원래는 등록된 파일만 생성)
$ git stash list
-> 스태시는 스택에서 내용을 읽어 올 때 현재 브랜치의 워킹 디렉토리와 자동 병합된다. 자동 병합이 성공하면 읽어 온 내용을 스택에서 제거한다.
-> 복원하는 도중 충돌이 생기면 스태시는 스택에 저장된 내용을 자동으로 삭제하지 않는다.
$ git stash pop
$ git stash branch 브랜치이름
이동하는 것복사하는 것$ git stash apply
// 예시
$ git stash apply stash@{1}
apply 명령어를 사용했거나 충돌이 발생했을 때 별도 명령을 통해 삭제
$ git stash drop
개발 과정에서 컴파일 등 임시로 생성되는 파일들이 생겼을 때 clean 명령어로 워킹 디렉토리에 있는 추적되지 않는 파일들을 찾아 삭제
❗❗ clean 명령어를 실행하는 순간 워킹 디렉토리의 추적되지 않는 모든 파일을 삭제하므로 주의해야 한다.
$ git clean
$ git clean -f // 강제 청소
$ git clean -n // 가상 처리 후 사용자에게 확인 요청
$ git clean -d // untracked 상태의 파일만 삭제
$ git clean -x // .gitignore에 등록한 파일까지 같이 삭제