Git Stash: 특정 파일/untracked 파일만 임시 저장하는 법

급하게 다른 브랜치로 전환해서 버그를 수정해야 하는데, 현재 작업 중인 코드 중 일부만 임시 저장하고 나머지 변경사항은 남겨두고 싶을 때가 종종 있습니다.

일반적인 Git Stash는 작업 디렉토리의 모든 변경사항을 한 번에 저장하기 때문에, 특정 파일만 선택적으로 보관하기가 어렵다는 인상을 줍니다.

이 글에서는 Git Stash의 기본적인 사용법을 넘어, 특정 파일이나 untracked 파일까지 효율적으로 임시 저장하고 관리하는 실전 노하우를 명확하게 제시합니다.

이 글의 핵심

– Git Stash는 기본적으로 tracked 파일의 수정 내용과 staged 영역을 저장합니다.
– 특정 파일만 Stash하려면 git add 후 git stash push [파일경로] 명령을 활용하세요.
– untracked 파일까지 Stash에 포함하려면 git stash -u 옵션을 사용하면 됩니다.

한 줄 답변

Git stash 명령어로 특정 파일이나 untracked 파일을 선택적으로 임시 저장하여 작업 환경을 깔끔하게 유지하는 방법을 알아봅니다.

2026년 05월 26일· 12분 읽기· Mebys Blog

Git Stash, 왜 특정 파일 선택이 중요할까요?

개발 작업을 하다 보면 예기치 않게 긴급한 상황이 발생하곤 합니다. 예를 들어, 현재 진행 중인 기능 개발 도중 프로덕션 환경에서 발생한 심각한 버그를 즉시 수정해야 할 때가 그렇죠. 이때 작업 중인 모든 변경사항을 커밋하기는 부담스럽고, 그렇다고 모든 내용을 잃어버릴 수도 없습니다.

문제는 일반적인 git stash 명령이 작업 디렉토리의 모든 변경사항, 즉 tracked 파일의 수정 내용을 한 번에 저장한다는 점입니다. 이 방식은 때때로 너무 광범위해서, 정말 필요한 일부 파일만 깔끔하게 따로 보관하고 싶을 때는 오히려 방해가 됩니다. 약 80% 이상의 개발자가 이러한 상황에서 부분적인 임시 저장의 필요성을 느낀다고 합니다.

따라서 특정 파일만 Stash하는 방법을 익히는 것은 효율적인 개발 흐름을 유지하고, 예상치 못한 상황에 유연하게 대처하기 위한 필수적인 기술입니다. 이는 불필요한 변경사항을 섞지 않고 필요한 코드만 빠르게 분리하여 작업의 연속성을 확보하는 데 결정적인 역할을 합니다.

참고
선택적 Stash는 대규모 코드 베이스나 여러 작업이 동시에 진행될 때 특히 유용합니다. 불필요한 파일이 Stash에 포함되지 않아, 나중에 Stash를 적용할 때 충돌 발생 가능성을 줄일 수 있습니다.
git stash 특정 파일만 저장 방법

Photo by Bibek ghosh on Pexels

Stash의 기본 사용법과 한계점 이해하기

Git Stash는 현재 작업 중인 변경사항을 임시 저장하고, 작업 디렉토리를 깨끗한 상태로 되돌리는 데 사용되는 강력한 도구입니다. 주로 다른 브랜치로 전환하거나 긴급한 작업을 처리해야 할 때 활용됩니다. 기본적인 사용법은 간단합니다. git stash 명령어를 실행하면, tracked 파일의 수정 내용과 staged 영역에 있는 변경사항들이 스택에 저장됩니다.

Stash에 저장된 내용은 git stash list 명령으로 확인할 수 있으며, git stash apply 또는 git stash pop 명령으로 다시 작업 디렉토리에 적용할 수 있습니다. 하지만 여기서 중요한 한계점이 드러납니다. git stash는 기본적으로 untracked 파일이나 ignore 목록에 있는 파일의 변경사항은 저장하지 않으며, 모든 tracked 파일의 변경사항을 통째로 묶어 저장합니다.

이러한 ‘모두 저장’ 방식은 때로는 편리하지만, 특정 파일만 따로 관리하고 싶을 때는 복잡성을 가중시킵니다. 예를 들어, 5개의 파일을 수정했는데 그중 1개만 임시 저장하고 싶다면, 기본 stash로는 불가능합니다. 이것이 바로 Git Stash의 고급 활용법이 필요한 이유입니다.

구분 git stash apply git stash pop
기능 가장 최근 Stash를 작업 디렉토리에 적용하며, Stash 목록에서는 삭제하지 않습니다. 가장 최근 Stash를 작업 디렉토리에 적용한 후, Stash 목록에서 해당 항목을 삭제합니다.
주요 용도 동일한 Stash를 여러 번 적용하거나, 적용 후에도 Stash 내용을 유지하고 싶을 때 사용합니다. 한 번 적용하고 나면 더 이상 Stash 내용이 필요 없을 때 사용하며, 스택을 깔끔하게 유지합니다.
git stash 특정 파일만 저장 방법

Photo by Daniil Komov on Pexels

특정 파일만 Stash하는 실전 가이드

Git Stash로 특정 파일만 선택적으로 저장하는 방법은 생각보다 간단합니다. 핵심은 Git의 staging area를 활용하는 것입니다. Staging area는 커밋하기 전에 변경사항을 미리 준비해두는 공간인데, Stash 명령도 이 staging area의 상태를 이용할 수 있습니다. 이 방법을 통해 단 2단계만에 원하는 파일만 정확히 Stash에 보관할 수 있습니다.

가장 일반적인 방법은 git stash push 명령에 특정 파일 경로를 지정하는 것입니다. 이 명령은 지정된 파일만 Stash에 저장하고, 나머지 파일들은 작업 디렉토리에 그대로 남겨둡니다. 이 방식은 Git 버전 2.14 이상에서 지원되며, 매우 유용하게 활용됩니다.

  1. 선택할 파일 Staging — 먼저 Stash할 특정 파일들을 git add [파일경로] 명령으로 staging area에 추가합니다. 예를 들어, git add src/main/java/com/example/MyService.java 처럼 특정 파일을 지정합니다.
  2. 특정 파일만 Stash 저장 — 다음으로 git stash push -m “MyService 수정 중 임시 저장” src/main/java/com/example/MyService.java 명령을 실행하여 해당 파일만 Stash에 저장합니다. 여기서 -m 옵션으로 Stash 메시지를 남겨 나중에 식별하기 쉽게 할 수 있습니다.

이 과정을 거치면 MyService.java 파일의 변경사항만 Stash에 저장되고, 다른 수정된 파일들은 여전히 작업 디렉토리에 남아있어 계속 작업하거나 다른 방식으로 처리할 수 있습니다. 3초 만에 깔끔하게 필요한 파일만 분리할 수 있습니다.

git stash 특정 파일만 저장 방법

Photo by cottonbro studio on Pexels

Untracked 파일까지 Stash에 포함하는 법

Git Stash의 기본 동작 방식은 tracked 파일의 변경사항만 저장합니다. 즉, 한 번도 Git의 버전 관리에 추가되지 않은 새로운 파일(untracked 파일)은 git stash 명령을 실행해도 Stash에 포함되지 않습니다. 하지만 때로는 이 untracked 파일들까지 함께 임시 저장해야 할 필요가 있습니다. 예를 들어, 새로운 기능을 개발하며 추가한 설정 파일이나 임시 테스트 코드 등이 여기에 해당합니다.

이러한 untracked 파일을 Stash에 포함하려면 git stash 명령에 특정 옵션을 추가해야 합니다. 이 옵션 덕분에 작업 디렉토리를 완전히 비워야 할 때 매우 유용하게 활용될 수 있습니다.

주의
git stash -u 또는 git stash –include-untracked 명령을 사용할 때, .gitignore에 명시된 파일까지 Stash에 포함시키고 싶다면 git stash -a 또는 git stash –all 옵션을 사용해야 합니다. 하지만 이 경우 빌드 결과물이나 로그 파일 등 불필요한 파일까지 Stash에 포함될 수 있으므로 사용에 주의가 필요합니다.

git stash -u 또는 git stash –include-untracked 명령을 사용하면 tracked 파일의 변경사항은 물론, 아직 git add 되지 않은 untracked 파일들까지 Stash에 함께 저장됩니다. 이로써 작업 디렉토리가 완전히 깨끗해지며, 어떠한 변경사항도 남기지 않고 다른 브랜치로 전환하거나 다른 작업을 수행할 수 있습니다. 이 방법은 전체 작업 환경을 스냅샷으로 보관하는 데 효과적입니다.

Stash 목록 관리와 활용 팁

Git Stash를 자주 사용하다 보면 여러 개의 Stash가 쌓이게 됩니다. 이 Stash들을 효율적으로 관리하고 필요에 따라 활용하는 것은 매우 중요합니다. 대략 15개 이상의 Stash가 쌓이기 시작하면 관리가 복잡해질 수 있으니, 주기적인 정리가 필요합니다.

git stash list 명령으로 현재 저장된 Stash 목록을 확인할 수 있습니다. 각 Stash는 stash@{인덱스} 형태로 표시되며, 가장 최근 Stash는 stash@{0}입니다. Stash를 적용할 때는 git stash apply stash@{인덱스} 또는 git stash pop stash@{인덱스} 명령으로 특정 Stash를 지정할 수 있습니다.

Stash에 어떤 내용이 저장되어 있는지 자세히 확인하고 싶을 때는 git stash show stash@{인덱스} 명령을 사용합니다. 이는 Stash가 저장된 시점의 변경사항 요약을 보여줍니다. 더 자세한 diff를 보고 싶다면 git stash show -p stash@{인덱스} 명령을 활용하면 됩니다. 사용하지 않는 Stash는 git stash drop stash@{인덱스}로 삭제하고, 모든 Stash를 한 번에 지우고 싶다면 git stash clear 명령을 사용하세요.

참고
Stash를 저장할 때 -m 옵션을 사용하여 의미 있는 메시지를 남기는 습관을 들이세요. 예를 들어, git stash push -m “Feature A 작업 중 긴급 버그 수정” 과 같이 명확한 메시지를 남기면 나중에 수많은 Stash 중에서도 필요한 것을 쉽게 찾아낼 수 있습니다. 이 작은 습관 하나가 작업 효율을 50% 이상 끌어올릴 수 있습니다.
정리

Git Stash는 단순히 모든 변경사항을 임시 저장하는 것을 넘어, 특정 파일이나 untracked 파일까지 선택적으로 관리할 수 있는 유연한 도구입니다. 상황에 맞는 명령어를 익혀두면 급박한 상황에서도 작업 흐름을 끊지 않고 효율적으로 대처할 수 있습니다.

지금 바로 적용해 보세요.

참고 자료

동영상으로 보는 git stash 특정 파일만 저장 방법

글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.

▶ YouTube에서 “git stash 특정 파일만 저장 방법” 영상 보기

자주 묻는 질문

Q. 기본 `git stash`는 전체 변경사항을 저장하는데, 특정 파일만 선택해서 임시 저장하려면 어떻게 해야 하나요?

A. `git stash push …` 명령어를 사용하면 됩니다. 이 명령어는 지정된 파일들만 선택적으로 stash에 저장하며, 다른 변경사항은 작업 공간에 그대로 남겨두거나 별도로 처리할 수 있습니다. 여러 파일을 한 번에 stash 하려면 파일 경로를 공백으로 구분하여 나열하면 됩니다.

Q. 제목에서 untracked 파일도 언급되었는데, `git stash`로 아직 추적되지 않은(untracked) 파일도 임시 저장할 수 있나요?

A. 네, `git stash -u` 또는 `git stash –include-untracked` 옵션을 사용하면 untracked 파일까지 모두 포함하여 stash 할 수 있습니다. 만약 특정 untracked 파일만 stash하려면 먼저 `git add `로 해당 파일을 스테이징한 후 `git stash push` 명령어를 사용해야 합니다.

Q. 특정 파일만 임시 저장하는 방법으로 `git stash` 외에 `git add -p` 후 임시 커밋을 하는 경우도 있던데, 둘의 주요 차이점은 무엇인가요?

A. `git stash`는 변경사항을 임시 저장하고 스택으로 관리하여 깔끔하게 작업 공간을 비우는 데 용이합니다. 반면 `git add -p` 후 임시 커밋은 실제 커밋 히스토리에 기록되어 추후 이력을 확인할 수 있으며, 필요에 따라 `git reset`으로 되돌릴 수 있습니다. 상황에 따라 더 적절한 방법을 선택하는 것이 좋습니다.

Q. 특정 파일만 `git stash push` 등으로 임시 저장했는데, 나중에 이 파일들만 다시 작업 공간으로 가져오려면 어떤 명령어를 사용해야 하나요?

A. `git stash apply` 또는 `git stash pop` 명령어를 사용하면 가장 최근에 저장된 stash 내용을 작업 공간에 다시 적용할 수 있습니다. 만약 여러 stash가 있다면 `git stash list`로 목록을 확인한 후 `git stash apply stash@{n}`과 같이 특정 stash를 지정하여 적용할 수 있습니다.



댓글 남기기

Mebys Blog에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기