Git

[Git] git stash 사용 방법

데브슈 2025. 2. 27. 00:57

Git branch에서 작업하다가 다른 브랜치로 이동하면 충돌이 일어나는 경우가 있다.

브랜치 이동 시 작업 중인 파일이 커밋되지 않은 상태에서 변경하려고 할 때 충돌이 발생하는데

만약 아직 커밋하고 싶지 않다면, 변경 사항을 stash(임시 저장) 한 후에 이동하면 된다.

 

프로젝트 때 커밋하기엔 아직 이른데 브랜치를 바꾸어야 하는 상황에서 유용하게 써먹었다.


00. Git Stash란?

git stash는 현재 작업 중인 변경 사항을 임시 저장하고 워킹 디렉토리를 깨끗한 상태로 만들 수 있는 기능이다.

이를 활용하면 브랜치 변경 혹은 다른 작업을 수행 한 후 돌아와서 변경 사항을 복구할 수 있다.


01. Git Stash 사용 방법

1) 변경 사항 임시 저장

git stash

해당 명령어 실행 시 현재 변경사항이 임시 저장되고 워킹 디렉토리가 변경 전 상태로 돌아간다.

 

2) 저장된 Stash 목록 확인

git stash list

stash에 저장된 목록을 확인할 수 있다.

가장 최근에 저장된 항목은 stash@{0}이다.

 

3) stash 적용 및 삭제

 (1) 저장된 Stash 적용

git stash pop

가장 최근의 Stash를 적용하고 적용된 stash는 목록에서 제거된다.

 

stash를 적용하되 목록 삭제를 원치 않을 경우 다음 명령어를 사용하면 된다.

git stash apply

특정 stash 항목을 선택하여 적용하고 싶은 경우 위 명령어 뒤에 stash@{1} 이렇게 작성하면 된다.

 

 (2) Stash 삭제

git stash drop stash@{1}

해당 stash를 삭제하는 명령어다.

git stash clear

모든 stash를 삭제하는 명령어다.

 

stash 관련 기본 명령어를 익혔으니 활용 예제를 통해 더 자세히 알아보도록 하자.


03. Git Stash 활용

1) stash 사용하여 브랜치 이동

 (1) 현재 변경 사항 stash에 저장

git stash

변경 사항을 임시 저장 했으므로 브랜치 이동이 가능하다.

 

 (2) 브랜치 변경

git switch main

 

 (3) 원래 브랜치로 이동

git switch 브랜치이름

 (4) Stash 적용

git stash pop

 

📌 git stash를 실행하게 될 경우 변경 사항이 임시저장되고 해당 브랜치는 Stash하기 전의 커밋된 상태로 돌아간다.

다시 말해, 브랜치를 이동했다가 다시 돌아와도 git stash pop 혹은 git stash apply를 하지 않으면 변경 사항이 반영되지 않는다.

그러므로 브랜치를 이동했다가 다시 돌아와서 내가 수정한 파일에서 계속 작업하고 싶다면 git stash pop/apply 를 한 후 작업하도록 하자.

 

2) 특정 파일만 Stash에 저장

git stash push -m "임시 저장 메세지" -- App.js

전체 변경이 아닌 특정 파일만 저장하고 싶은 경우 해당 명령어를 통해 확인할 수 있다.

 

3) Stash 내용 확인

git stash show -p stash@{0}

임시 저장되어 있는 변경 사항을 확인하는 명령어다.


정리

- 안전하게 작업을 임시 저장하여 자유로운 브랜치 이동 가능

- git stash list 통해 저장된 Stash 목록 확인 가능

- git stash pop/apply 통해 임시 저장한 내용 재적용 가능

- 특정 stash 삭제 혹은 전체 stash 삭제 가능

 

+) git stash pop 을 하면 가장 최근 stash(stash@{0})이 적용되고 목록에서 사라지므로 특정 stash를 적용하고 싶다면

git stash apply stash@{n} 사용을 해야 한다. 적용 후 목록 삭제를 원한다면 git stash pop stash@{n} 을 사용하면 된다.

'Git' 카테고리의 다른 글

[Git] 작업 중 commit 안하고 main pull 하는 방법  (0) 2025.02.27
Git branch 생성 방법과 활용  (0) 2025.02.26