git stash 완벽 가이드 아직도 commit 하시나요? 임시 저장 활용법 (list, apply, drop, pop)

git stash 완벽 가이드 아직도 commit 하시나요? 임시 저장 활용법 (list, apply, drop, pop) 1

개발 작업을 하다 보면 아직 완료되지 않은 코드를 잠시 제쳐두고 다른 급한 업무를 처리해야 할 때가 많습니다. 예를 들어, 새로운 기능을 열심히 개발하던 중에 갑자기 운영 서버에서 발생한 긴급 버그를 수정해야 하는 상황이 닥칠 수 있습니다. 이때 작업 중이던 코드를 커밋(commit)하기에는 애매하고, 그냥 다른 브랜치로 이동하자니 작업 내용이 꼬일까 봐 걱정됩니다. 바로 이런 상황에서 git stash 명령어는 개발자에게 한 줄기 빛과 같은 해결책이 되어 줍니다.

git stash는 아직 커밋하지 않은 변경 사항(Staged 또는 Unstaged)을 일시적으로 안전하게 보관해주는 Git의 강력한 기능입니다. 이 기능을 활용하면 작업 중인 디렉토리를 깨끗한 상태(HEAD 커밋 상태)로 되돌릴 수 있어, 마음 편히 다른 브랜치로 이동하거나 새로운 작업을 시작할 수 있습니다. 오늘은 git stash의 개념부터 핵심 명령어, 그리고 실무에서 유용하게 쓰이는 고급 활용 팁까지 자세히 알아보겠습니다.

😫 Git 작업 중 이런 경험 없으신가요?

개발자라면 누구나 한 번쯤 겪어봤을 법한 난감한 상황들이 있습니다.

이 모든 상황에서 git stash는 가장 깔끔하고 효율적인 해결책을 제시합니다. 불필요한 임시 커밋을 남발하지 않고도 작업의 연속성을 유지할 수 있게 해주는 것이죠.

✨ git stash란 무엇일까요?

git stash를 한마디로 정의하면 “아직 커밋하지 않은 변경 사항을 임시로 저장하는 선반”이라고 할 수 있습니다. Stash는 ‘숨기다’, ‘넣어두다’라는 뜻을 가지고 있으며, 그 의미처럼 작업 내용을 스택(Stack) 구조의 저장 공간에 잠시 넣어두는 역할을 합니다.

작업 디렉토리에서 git stash 명령을 실행하면, Git은 현재 브랜치에서 변경된 파일들(Tracked files)을 찾아내어 별도의 공간에 저장하고, 작업 디렉토리는 마지막 커밋 상태로 깨끗하게 정리해 줍니다. 이후 다른 작업을 마치고 원래 브랜치로 돌아와 저장해 둔 내용을 다시 불러와 작업을 이어갈 수 있습니다.

📚 git stash 핵심 명령어 완벽 정리

git stash와 관련된 명령어는 몇 가지 핵심적인 것만 알아두면 실무에서 충분히 활용할 수 있습니다. 각 명령어의 기능과 사용법을 예시와 함께 살펴보겠습니다.

git stash (또는 git stash save “메시지”) – 변경 내용 임시 저장하기

가장 기본이 되는 명령어입니다. 현재 작업 디렉토리의 변경 사항을 stash 스택에 저장합니다.

단순히 git stash만 사용해도 되지만, save 옵션과 함께 메시지를 남기는 습관을 들이는 것이 좋습니다. 여러 개의 stash가 쌓였을 때 어떤 내용을 저장했는지 쉽게 구분할 수 있기 때문입니다.

git stash list – 저장된 작업 목록 확인하기

지금까지 저장한 stash들의 목록을 확인할 수 있습니다. 가장 최근에 저장한 stash가 맨 위(stash@{0})에 표시됩니다.

목록에서 stash@{n} 형태의 고유 식별자를 통해 특정 stash를 관리할 수 있습니다.

git stash apply [stash 이름] – 저장된 변경 내용 다시 적용하기

stash에 저장된 변경 사항을 현재 작업 디렉토리에 다시 적용합니다. apply는 적용 후에도 stash 목록에서 해당 내용을 삭제하지 않고 그대로 남겨둡니다.

하나의 stash를 여러 브랜치에 적용하고 싶을 때 유용하게 사용할 수 있습니다.

git stash drop [stash 이름] – 특정 stash 삭제하기

apply로 적용했거나 더 이상 필요 없어진 stash를 목록에서 제거할 때 사용합니다.

git stash pop [stash 이름] – 적용과 동시에 삭제하기

popapplydrop을 합친 명령어입니다. stash의 내용을 현재 작업 디렉토리에 적용한 후, 해당 stash를 목록에서 자동으로 삭제합니다. 대부분의 경우, 한 번 적용하고 나면 stash가 더 이상 필요 없기 때문에 apply보다 pop이 더 자주 사용됩니다.

중요한 점은, pop 실행 시 만약 코드 충돌(Conflict)이 발생하면 stash가 자동으로 삭제되지 않는다는 것입니다. 사용자가 충돌을 해결한 후, 수동으로 git stash drop을 실행해 주어야 합니다.

💡 git stash 고급 활용 팁 (Untracked, All)

기본적으로 git stash는 Git이 추적하고 있는(Tracked) 파일의 변경 사항만 저장합니다. 새로 생성되어 한 번도 커밋되지 않은 파일(Untracked files)이나 .gitignore에 의해 무시되는 파일들은 저장 대상에서 제외됩니다. 하지만 옵션을 통해 이 파일들도 함께 저장할 수 있습니다.

Untracked 파일 포함하기 git stash -u (or –include-untracked)

새로운 파일을 생성하고 작업하던 중에 다른 브랜치로 이동해야 할 때 유용합니다. -u 옵션을 사용하면 Untracked 파일까지 함께 stash에 저장할 수 있습니다.

모든 파일 포함하기 (Ignored 파일까지) git stash -a (or –all)

.gitignore에 등록하여 의도적으로 무시 처리한 파일들까지 포함하여 모든 변경 사항을 저장하고 싶을 때 사용합니다. 예를 들어, 빌드 결과물이나 로그 파일 등도 함께 임시 저장해야 하는 특별한 경우에 사용할 수 있습니다.

이 옵션은 강력하지만, 불필요한 파일까지 저장할 수 있으므로 주의해서 사용해야 합니다.

⚠️ git stash 사용 시 주의사항 및 충돌(Conflict) 해결

git stashapply하거나 pop 할 때, 저장했던 시점의 코드와 현재 코드가 같은 부분을 수정한 경우 충돌(Conflict)이 발생할 수 있습니다. 이는 git mergegit rebase 시 발생하는 충돌과 동일한 상황입니다.

충돌이 발생하면 Git은 해당 파일에 충돌 부분을 표시해 줍니다. 개발자는 직접 파일을 열어 어떤 코드를 남길지 결정하고 수정해야 합니다.

git stash는 복잡한 Git 워크플로우 속에서 유연성을 더해주는 매우 유용한 도구입니다. 지저분한 임시 커밋을 남기지 않고도 현재 작업을 안전하게 보관하고 다른 컨텍스트로 자유롭게 이동할 수 있게 해줍니다. 오늘 배운 핵심 명령어와 팁을 잘 활용하여 더 깔끔하고 효율적인 개발 워크플로우를 만들어 보시길 바랍니다.

관련 글

SFC /scannow 명령어 완벽 가이드 윈도우 시스템 파일 손상 오류 해결 방법

DPC_WATCHdog_VIOLATION 블루스크린 완벽 해결 가이드(+ 원인 및 해결법 5가지)

백링크(Backlink) 뜻 제대로 알고 구글 SEO 상위노출 성공하는 방법

토스 페이스페이 사용법 완벽 가이드 | 매장에서 결제하는 꿀팁

농협사잇돌2대출 2025년 자격 조건 신용등급 낮아도 가능한 방법 총정리

위로 스크롤