블로그 방문자만 3개월 추가 무료 이용권 + 3년 플랜 10% 할인 혜택을 받으세요 와이스블로그10
거래를 잡아

2026년 간단한 예제를 통해 Git Stash 명령어를 설명합니다.

마지막 업데이트 : 2026 년 9 월 7 일 9 분 읽음 산지트 차우한
Git Stash 명령어

Git stash는 커밋하지 않은 변경 사항을 임시로 보관하여 브랜치를 전환하거나, 업데이트를 가져오거나, 테스트를 실행할 때 작업 내용을 잃지 않고 깨끗한 작업 트리에서 작업할 수 있도록 합니다.

수정된 파일(및 선택적으로 추적되지 않거나 무시된 파일)을 스택과 같은 저장소에 저장하여 나중에 다시 적용할 수 있도록 합니다. git stash apply 또는 제거 후 한 번에 적용하세요. git stash pop.

작업을 잠시 중단하고 다른 작업으로 전환한 후 진행 상황을 잃지 않고 다시 돌아와야 할 때가 있다면, git stash 명령어가 최고의 도구가 될 것입니다.

이 가이드에서는 호스팅, CI/CD 및 협업 팀에서 실제로 사용되는 워크플로를 기반으로 간단한 예제, 유용한 팁 및 흔히 발생하는 문제점을 통해 Git stash 명령어를 설명합니다.


Git Stash란 무엇이며 어떻게 작동합니까?

Git 스태시 현재 작업 디렉터리(아직 커밋되지 않은 변경 사항)를 가져와서 해당 변경 사항을 참조하는 특수 스택에 저장합니다. refs/stash그러면 작업 디렉터리가 HEAD와 일치하도록 정리되어 충돌 없이 브랜치를 전환하거나 풀할 수 있습니다. 나중에 저장된 변경 사항을 어떤 브랜치에든 다시 적용할 수 있습니다.

무엇이 숨겨지는가?

  • 변경 내용 추적됨: Git이 이미 추적 중인 파일을 수정했습니다.
  • 추적되지 않은 파일: 사용하는 경우에만 --include-untracked or -u/-a.
  • 무시된 파일: 사용하는 경우에만 --all.
  • 인덱스와 작업 트리스테이징된 변경 사항이 스테이징 상태로 유지될지 여부는 다음을 사용하여 제어할 수 있습니다. --keep index.

Git Stash는 언제 사용해야 할까요?

  • 당신은해야 스위치 분기 하지만 아직 확정하지 못한 로컬 수정 사항이 있습니다.
  • 나는 풀/리베이스 부분적인 작업을 하지 않고 깔끔하게 처리합니다.
  • 단축형 실험적 그리고 안전한 임시 스냅샷을 원합니다.
  • 너의 CI / CD 또는 스테이징 워크플로를 실행하려면 빌드를 테스트하기 위해 깨끗한 작업 트리가 필요합니다.

빠른 시작: 가장 유용한 Git Stash 명령어

보관함 생성(저장/푸시)

최신 Git은 다음과 같은 기능을 사용합니다. git stash push 에 (동등한 git stash (대부분의 경우). 나중에 알아볼 수 있도록 메시지를 추가하세요.

# Stash tracked changes with a message
git stash push -m "WIP: homepage layout tweak"

# Include untracked files (e.g., new files)
git stash push -u -m "WIP: add ContactForm component"

# Include ignored files too (rare)
git stash push -a -m "Temp build outputs stashed"

숨겨진 아이템들을 확인해 보세요

git stash list
git stash show -p stash@{0}   # show patch of a specific stash

재적용 vs 재적용 및 제거

  • 신청 리플레이는 변경되지만 유지 숨겨진 물건: git stash apply
  • 팝 리플레이 변경 사항 및 제거하다 숨겨진 물건: git stash pop
# Apply the most recent stash
git stash apply

# Apply a specific stash
git stash apply stash@{2}

# Pop (apply and remove)
git stash pop
git stash pop stash@{1}

숨겨진 물건들을 정리하세요

# Remove one stash
git stash drop stash@{0}

# Remove all stashes
git stash clear

보관함에서 분기 생성

# Great for turning WIP into a feature branch
git stash branch feature/new-ui stash@{0}

실용적인 Git Stash 사용법 (단계별)

1) 로컬 편집 내용을 저장하여 최신 코드를 가져옵니다.

# You have uncommitted changes on main
git stash push -m "WIP: optimize hero image"

# Get the latest changes safely
git pull --rebase

# Reapply your work
git stash pop

최신 업스트림 커밋을 기반으로 리베이스하여 히스토리를 깔끔하게 유지하고 병합 충돌을 줄입니다.

2) 특정 파일만 보관하세요

# Only stash changes in src/components
git stash push -m "WIP: components only" -- src/components

# Only stash a single file
git stash push -m "WIP: header styles" -- src/styles/header.css

Pathspecs를 사용하면 stash의 범위를 제한할 수 있으므로, 관련 없는 변경 사항이 영향을 미치지 않아야 하는 대규모 저장소에 적합합니다.

3) 추적되지 않거나 무시된 파일 보관

# Include untracked files
git stash push -u -m "WIP: new config files"

# Include everything (tracked, untracked, ignored)
git stash push -a -m "WIP: stash node_modules & build"

-a 조심스럽게. 무시되는 큰 폴더(예: )를 보관합니다. node_modules/)는 속도가 느릴 수 있으며, 필요한 경우가 드뭅니다.

4) 스태시 적용 후 갈등 해결

If apply or pop 충돌이 발생하면 Git은 병합 충돌처럼 파일을 표시합니다. 충돌을 해결한 다음 해결됨으로 표시하세요.

# After conflicts occur
git status
# Edit files and resolve conflict markers
git add <resolved-files>
# If you used pop and conflicts happened, the stash may still exist until resolution completes

5) 스태시를 피처 브랜치로 변환

현재 브랜치에 영향을 주지 않고 진행 중인 작업을 별도의 브랜치로 분리하세요.

git stash branch feature/login-ui stash@{0}
# Now commit changes on the new branch

고급 Git Stash 기술

설명 메시지를 추가하세요

# Always describe your stash for future you (or teammates)
git stash push -m "WIP: refactor API client for retries"

단계별 변경 사항은 단계별로 유지하세요.

--keep-index 스테이징되지 않은 변경 사항만 임시로 저장합니다. 커밋 준비가 절반 정도 완료되었지만 잠시 멈춰야 할 때 유용합니다.

# Keeps staged changes intact; stashes only unstaged edits
git stash push --keep-index -m "Pause: tests failing, keep staged fix"

보관함 인터랙티브(패치 모드)

특정 부분을 묶어두도록 선택할 수 있습니다. 이는 파일에 커밋할 준비가 된 부분과 아직 실험적인 부분이 모두 포함되어 있을 때 유용합니다.

git stash push -p -m "WIP: stash only parts of file"

Apply, Pop, Branch 비교

  • 대다: 재적용이 깔끔하게 될지 확신할 수 없을 때 가장 안전합니다 (충돌이 발생하더라도 보관된 데이터는 남아 있습니다).
  • 팝: 자신감이 생기면 더 빠르게, 한 번에 바르고 제거할 수 있습니다.
  • 분기: 코드 검토 또는 CI를 위해 작업 중인 코드를 별도의 브랜치로 분리하는 데 가장 적합합니다.

일반적인 실수 및 이를 방지하는 방법

  • 숨겨둔 물건 안에 무엇이 있는지 잊어버리는 것: 항상 사용 -m 메시지 및 git stash show -p 신청하기 전에.
  • 갈등 발생 가능성이 높을 때 인구 통계를 활용합니다. 취하다 apply결과를 확인한 후 수동으로 drop.
  • 무시되는 대용량 폴더 저장: 피하 -a 필수적인 경우가 아니라면 사용하지 마세요. 작업 속도가 느려지고 저장소 메타데이터가 불필요하게 커질 수 있습니다.
  • 장기 보관 수단으로 저장고에 의존하는 것: Stash는 단기적인 작업 전환에 사용합니다. 작업이 하루 이상 지속될 경우 브랜치로 전환하세요.

실제 워크플로우: 팀, CI/CD 및 호스팅

빠르게 변화하는 팀 환경에서는 릴리스 전에 빠른 핫픽스를 실행하거나 업데이트를 풀하기 위해 stash를 자주 사용하게 됩니다. 코드 리뷰 및 CI와 함께 stash를 사용하면 "WIP" 커밋으로 히스토리를 오염시키지 않고 작업 복사본을 깔끔하게 유지할 수 있습니다.

  • 기준점 변경 전: git stash push, git pull --rebase다음, git stash pop.
  • 긴급 핫픽스 이전: 현재 작업을 저장하고, 핫픽스 브랜치를 체크아웃하고, 패치를 적용하고, 배포한 다음, 돌아와서 팝하세요.
  • 스테이징/테스트용: WIP는 스테이징 브랜치에서 제외하고, 중요한 스태시는 기능 브랜치로 변환하세요.git stash branch ...CI 테스트용입니다.

당신이 사용하는 경우 manageGit 워크플로를 사용한 호스팅브랜치 기반 배포를 지원하는 스테이징 환경을 찾아보세요. YouStable저희의 개발자 친화적인 호스팅 서비스를 이용하면 브랜치별로 스테이징 사이트를 쉽게 구축할 수 있으므로, 개발 환경을 빠르게 전환할 수 있습니다. git stash 적절한 기능 브랜치로 병합하고 프로덕션 환경에 영향을 주지 않고 안전하게 변경 사항을 테스트하세요.

Git Stash 문제 해결

“내 마약은 어디로 갔지?”

달리기 git stash list실수로 스태시를 삭제했다면 리프레시 로그를 확인하세요. 스태시 항목은 커밋 기록이므로 경우에 따라 복구할 수 있습니다.

# Show stash stack
git stash list

# Inspect HEAD and stash movements
git reflog

# If you spot the lost commit hash, create a branch to recover
git branch rescue <commit-hash>

잘못된 양을 사용했어요

git reset --hard 작업 트리를 알려진 커밋으로 되돌릴 수 있습니다(주의: 커밋되지 않은 변경 사항은 삭제됩니다). 또는 의도치 않은 상태를 커밋하고 새 커밋을 통해 되돌리는 방법이 있는데, 공유 브랜치에서는 이 방법이 더 안전합니다.

적용/팝업 시 보관 충돌

  • 충돌을 검토하세요: git status
  • 파일 내 마커 해결: <<<<<<<, =======, >>>>>>>
  • Mark가 해결했습니다: git add
  • 지원서를 작성하세요: 사용하는 경우 pop완료되었는지 확인하고, 그렇지 않으면 조심스럽게 다시 적용하십시오.

Git Stash 사용을 위한 모범 사례

  • 작고 잦은 커밋을 선호합니다. 공유 가능한 작업에는 stash를 사용하고, 짧고 개인적인 컨텍스트 전환에는 stash를 사용하세요.
  • 숨겨둔 물건들에 이름을 붙여보세요 과 -m 바쁜 스프린트 기간 동안 명확성을 유지하기 위해서입니다.
  • 팝업 전에 적용하세요 충돌이 예상되거나 여러 지점에 걸쳐 재지원하는 경우.
  • 오래 보관 가능한 저장품을 변환하세요 기능 브랜치로: git stash branch.
  • 쌓아 놓은 것을 가지런히 정리하세요더 이상 필요하지 않은 아이템은 버리거나 정리하세요.

Git Stash 명령어 참조 (요약본)

# Save changes
git stash push -m "message"
git stash push -u -m "include untracked"
git stash push -a -m "include ignored"

# Inspect
git stash list
git stash show -p stash@{n}

# Reapply
git stash apply [stash@{n}]
git stash pop [stash@{n}]

# Remove
git stash drop [stash@{n}]
git stash clear

# Branch from stash
git stash branch <branch-name> [stash@{n}]

# Partial/interactive
git stash push -p -m "partial stash"

# Keep staged changes
git stash push --keep-index -m "keep index"

FAQ's

1. Git Stash는 실제로 무엇을 저장하며 어디에 저장하나요?

각 스태시는 아래에 저장된 커밋 집합입니다. refs/stash일반적으로 인덱스(스테이징된 변경 사항)와 작업 트리(스테이징되지 않은 변경 사항)에 대한 커밋이 포함됩니다. 다음 명령어를 사용하여 확인할 수 있습니다. git stash list 그리고 다음을 통해 콘텐츠를 검사합니다. git stash show -p.

2. `git stash apply`와 `git pop`의 차이점은 무엇인가요?

apply 변경 사항을 다시 적용하지만 저장된 내용은 그대로 유지되므로 다시 시도하거나 다른 곳에서 사용할 수 있습니다. pop 변경 사항을 다시 적용하고 저장소 항목을 제거합니다. 충돌이 발생할 가능성이 있는 경우 다음을 사용하십시오. apply 먼저 drop 성공 후에.

3. 추적되지 않는 파일이나 무시된 파일을 어떻게 보관하나요?

-u/--include-untracked 추적되지 않는 파일을 보관하기 위해, -a/--all 무시된 파일도 포함하려면 다음과 같이 하세요. 예시: git stash push -u -m "stash new files" or git stash push -a -m "stash everything".

4. 특정 파일이나 파일의 일부만 보관할 수 있나요?

예. 경로별 제한: git stash push -- path/to/file부분적인 변경을 위해서는 대화형 모드를 사용하세요. git stash push -p 덩어리를 한 줄씩 선택합니다.

5. Git Stash는 장기 보관에 안전한가요?

Stash는 단기적인 작업 전환을 위해 설계되었습니다. 장기적인 작업을 위해서는 Stash를 브랜치로 변환하여 사용하세요. git stash branch <name>이렇게 하면 CI, 코드 검토 및 협업 워크플로가 정상적으로 진행될 수 있습니다.


맺음말

Git stash는 개발자에게 강력한 안전망 역할을 합니다. 개발 진행 상황을 유지하고, 병합 과정에서 발생하는 어려움을 줄이며, 히스토리를 깔끔하게 관리해 줍니다. 메시지를 활용하고, 확신이 서지 않을 때는 pop 전에 apply를 적용하고, 진행 중인 작업은 stash에서 분기하세요.

지원되는 스테이징 브랜치에서 빌드 및 테스트 YouStableGit 친화적인 호스팅 서비스를 통해 코드 한 줄도 손실 없이 안심하고 배포할 수 있습니다.

코멘트 남김

이메일 주소는 공개되지 않습니다. 필수 입력 항목은 * 로 표시되어 있습니다.

위쪽으로 스크롤