Git 기초편 7편 — stash, 작업 잠깐 숨기기

2026. 5. 11. 12:06·블로그, 컴퓨터/DevOps

git 연재글 썸네일

"Git을 공부하면서 쓰는 시리즈" 7편입니다.
1편: git init · 2편: 브랜치 · 3편: git log 트리 · 4편: merge와 충돌 · 5편: 원격 저장소 · 6편: .gitignore


시작하면서

이런 상황이 있습니다.

feature/login 브랜치에서 작업을 한창 하고 있는데, 갑자기 다른 브랜치의 버그를 급하게 고쳐달라는 요청이 들어옵니다. 지금 작업은 아직 절반밖에 안 됐고, 커밋하기엔 이릅니다. 그렇다고 작업 내용을 버리고 이동할 수도 없습니다.

이럴 때 git stash가 있습니다. 작업 중인 변경사항을 임시로 저장해두고, 나중에 꺼내서 이어서 쓸 수 있습니다.


git stash — 변경사항 임시 저장

현재 작업 디렉토리에 수정 중인 파일이 있다고 가정합니다.

git status
On branch feature/login
Changes not staged for commit:
        modified:   login.md

Untracked files:
        temp.md

git stash를 치면 이 변경사항들이 임시 저장소로 들어갑니다.

git stash
Saved working directory and index state WIP on feature/login: c1d2e3f 로그인 페이지 초안 추가

다시 git status를 확인해보면 작업 디렉토리가 깨끗해집니다.

git status
On branch feature/login
nothing to commit, working tree clean

이제 다른 브랜치로 자유롭게 이동할 수 있습니다.


stash는 스택 구조입니다

stash는 변경사항을 스택(stack) 으로 쌓아두는 구조입니다. 나중에 저장한 것이 먼저 나오는 방식이에요.

stash를 여러 번 하면 이렇게 쌓입니다.

git stash list
stash@{0}: WIP on feature/login: c1d2e3f 로그인 페이지 초안 추가
stash@{1}: WIP on main: a9b3c12 README에 프로젝트 설명 추가

stash@{0}이 가장 최근에 저장한 것, stash@{1}이 그 전 것입니다.


git stash pop — 꺼내서 적용하기

저장해둔 작업으로 돌아가고 싶을 때는 pop을 씁니다.

git stash pop

가장 최근 stash(stash@{0})를 꺼내서 현재 작업 디렉토리에 적용하고, stash 목록에서 삭제합니다.

특정 stash를 꺼내고 싶으면 번호를 지정합니다.

git stash pop stash@{1}

git stash apply — 꺼내되 목록에는 남기기

pop과 비슷하지만, stash 목록에서 삭제하지 않습니다.

git stash apply stash@{0}

같은 stash를 여러 브랜치에 적용해야 할 때 유용합니다.


pop vs apply

  pop apply
적용 후 stash 목록 삭제됨 남아있음
주로 쓰는 경우 한 번만 쓸 때 여러 곳에 적용할 때

대부분의 경우에는 pop이면 충분합니다.


stash에 이름 붙이기

stash가 여러 개 쌓이면 stash@{0}, stash@{1}만으로는 어떤 작업인지 구별하기 어렵습니다. 저장할 때 설명을 붙일 수 있습니다.

git stash push -m "로그인 유효성 검사 작업 중"

git stash list에서 이렇게 보입니다.

stash@{0}: On feature/login: 로그인 유효성 검사 작업 중

stash가 여러 개 쌓일 것 같으면 처음부터 이름을 붙이는 습관이 편합니다.


Untracked 파일도 stash하려면

기본 git stash는 Git이 이미 추적 중인 파일의 변경사항만 저장합니다. 새로 만든 파일(Untracked)은 포함되지 않습니다.

git status
Changes not staged for commit:
        modified:   login.md      ← stash됨

Untracked files:
        new-feature.md            ← 기본 stash에서 제외됨

Untracked 파일까지 함께 저장하려면 -u 옵션을 씁니다.

git stash -u

stash 삭제하기

다 쓴 stash는 지울 수 있습니다.

특정 stash 하나 삭제:

git stash drop stash@{0}

전체 삭제:

git stash clear

clear는 되돌릴 수 없으니 신중하게 씁니다.


실전 흐름 한 번 더

처음 상황으로 돌아가서 전체 흐름을 정리합니다.

# 1. feature/login에서 작업 중
git status
# → modified: login.md

# 2. 급하게 main으로 이동해야 함
git stash -u          # 작업 임시 저장 (untracked 포함)

# 3. 다른 브랜치로 이동해서 작업
git switch main
# ... 버그 수정 후 커밋 ...

# 4. 다시 feature/login으로 돌아와서 이어서 작업
git switch feature/login
git stash pop         # 저장해둔 작업 꺼내기

이번 편 정리

명령어 하는 일
git stash 변경사항 임시 저장
git stash -u Untracked 파일 포함해서 임시 저장
git stash push -m "설명" 이름 붙여서 저장
git stash list 저장된 stash 목록 확인
git stash pop 가장 최근 stash 꺼내서 적용 후 삭제
git stash apply stash@{N} 특정 stash 적용, 목록에는 유지
git stash drop stash@{N} 특정 stash 삭제
git stash clear 전체 stash 삭제

다음 편 예고

마지막 기초편입니다. 커밋을 잘못 만들었을 때 되돌리는 방법을 다룹니다. git commit --amend, git revert, git reset — 세 가지 모두 "되돌린다"는 공통점이 있지만 동작 방식과 쓰는 상황이 전혀 다릅니다. 어느 상황에 뭘 써야 하는지 정리합니다.


이 시리즈의 다른 글

  • [기초편 1편] git init과 첫 커밋까지
  • [기초편 2편] 브랜치, 어렵지 않아요
  • [기초편 3편] git log를 트리로 보는 법
  • [기초편 4편] merge와 충돌 해결
  • [기초편 5편] 원격 저장소 연결하기
  • [기초편 6편] .gitignore 제대로 쓰기
  • [기초편 8편] 실수 되돌리기 총정리
반응형
저작자표시 비영리 변경금지 (새창열림)

'블로그, 컴퓨터 > DevOps' 카테고리의 다른 글

Git 기초편 8편 — 실수 되돌리기 총정리  (0) 2026.05.11
Git 기초편 6편 — .gitignore 제대로 쓰기  (0) 2026.05.11
Git 기초편 5편 — 원격 저장소 연결하기  (0) 2026.05.11
Git 기초편 4편 — merge와 충돌 해결  (0) 2026.05.10
Git 기초편 3편 — git log를 트리로 보는 법  (1) 2026.05.10
'블로그, 컴퓨터/DevOps' 카테고리의 다른 글
  • Git 기초편 8편 — 실수 되돌리기 총정리
  • Git 기초편 6편 — .gitignore 제대로 쓰기
  • Git 기초편 5편 — 원격 저장소 연결하기
  • Git 기초편 4편 — merge와 충돌 해결
생각사람
생각사람
지극히 사적인 연구실
  • 생각사람
    생각사람의 별장
    생각사람
  • 전체
    오늘
    어제
    • 분류 전체보기 (207) N
      • 금융 (57)
        • 주식 공부 (11)
        • 파생상품 입문 (17)
        • 파생상품 기초 (15)
        • 파생상품 실전 (14)
      • 블로그, 컴퓨터 (83) N
        • 프로그래밍 (16)
        • DevOps (8)
        • AI, RL, ML, ... (5)
        • 애드센스, SEO (23)
        • 임베디드 (3)
        • 컴퓨터 관련 (7)
        • Cheatsheets (21) N
      • 다른 공부들 (67)
        • 읽고 쓰기 (18)
        • 수학 (15)
        • 물리 (9)
        • 사진 공부 (25)
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 태그

    선형대수학
    코딩
    깃허브
    양자역학
    옵션 투자
    웹크롤러
    구글 애드센스
    옵션
    Kreyszig
    GIT
    프로그래밍
    깃
    c++
    슈뢰딩거 방정식
    version control
    스트래들
    파생상품
    벡터
    독후감
    AI
    cmake
    소니 a6000
    c
    행렬
    github
    선물 옵션
    오펜하이머
    공업수학
    스트랭글
    CheatSheet
  • hELLO· Designed By정상우.v4.10.6
생각사람
Git 기초편 7편 — stash, 작업 잠깐 숨기기
상단으로

티스토리툴바