git stash list와 show — 스태시 목록 확인

git stash list로 저장된 항목 목록을 조회하고, stash show로 변경 내용을 확인하는 방법, 포맷 옵션과 실전 사용 패턴을 다룬다.

· 4 min read · PALDYN Team

지난 글에서 git stash의 기본 개념과 워크플로를 살펴봤다. 이번에는 stash 스택을 조회하고 내용을 확인하는 방법을 자세히 다룬다. stash가 여러 개 쌓였을 때 원하는 것을 찾는 방법이 핵심이다.

stash list

git stash list는 스택에 저장된 모든 stash 항목을 출력한다.

stash 스택 구조

git stash list
# stash@{0}: WIP on feature/login: abc1234 로그인 WIP
# stash@{1}: WIP on main: def5678 hotfix 시도
# stash@{2}: WIP on develop: ghi9012 실험

# 이름 붙인 경우
git stash push -m "API 연동 작업 중"
git stash list
# stash@{0}: On feature/login: API 연동 작업 중

이름이 없으면 “WIP on 브랜치: SHA 메시지” 형식이 기본이다. 스택이 커지면 이름을 붙이는 게 관리하기 쉽다.

stash list 포맷 옵션

git log와 동일한 --format 옵션을 쓸 수 있다.

# 인덱스와 메시지만
git stash list --format="%gd: %s"
# stash@{0}: On feature/login: API 연동 작업 중

# 날짜 포함
git stash list --format="%gd %cr: %s"
# stash@{0} 2 hours ago: On feature/login: API 연동 작업 중

# 간결한 형태
git stash list --oneline

%gd는 stash ref(예: stash@{0}), %s는 제목, %cr은 상대 날짜다.

stash show

git stash show는 특정 stash가 어떤 파일을 변경했는지 요약을 보여준다.

stash show 상세 확인

# 가장 최근 stash 변경 파일 요약
git stash show
# src/auth.js     | 12 +++++++++---
# src/login.css   |  5 ++---
# 2 files changed, ...

# 특정 stash
git stash show stash@{1}

# stat 형태 (파일 목록 + 통계)
git stash show --stat
git stash show --stat stash@{2}

stash show -p: 전체 diff

# 전체 diff 출력 (가장 최근 stash)
git stash show -p

# 특정 stash의 전체 diff
git stash show -p stash@{1}

-p(또는 --patch)는 실제 변경 내용을 diff 형태로 보여준다. stash를 복원하기 전에 내용을 미리 확인할 때 유용하다.

실전 패턴: 원하는 stash 찾기

# 1. 목록으로 후보 좁히기
git stash list
# stash@{0}: On feature: API 연동 작업 중
# stash@{1}: On main: 설정 파일 수정
# stash@{2}: On develop: 실험적 기능

# 2. show로 파일 확인
git stash show stash@{1}
# config/settings.py | 8 +++++---

# 3. diff로 내용 확인
git stash show -p stash@{1}

# 4. 원하는 stash 복원
git stash apply stash@{1}

stash와 git log 연계

stash는 내부적으로 커밋 객체로 저장된다. git log로도 확인할 수 있다.

# stash 커밋의 상세 정보
git log --oneline stash@{0}^..stash@{0}

# stash가 저장된 브랜치 확인
git show stash@{0} --format="%D"

stash 객체는 parent가 두 개인 특수한 머지 커밋 구조다. parent 1은 HEAD, parent 2는 인덱스(스테이징) 상태다.

stash 관리 팁

스택이 커지면 오래된 stash를 정리하는 것이 좋다.

# 모든 stash 목록 확인
git stash list

# 특정 stash 삭제
git stash drop stash@{2}

# 모든 stash 삭제 (신중히)
git stash clear

# 특정 stash를 새 브랜치로 만들기
git stash branch new-branch stash@{1}

stash branch는 stash를 만든 시점의 HEAD에서 새 브랜치를 만들고 stash를 적용한 뒤 스택에서 제거한다. stash가 현재 브랜치와 충돌날 때 유용하다.


지난 글: git stash — 변경사항 임시 저장


읽어주셔서 감사합니다. 😊