Recent Posts
Recent Comments
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
관리 메뉴

ㅇ.ㅇ

[Git] Stash 본문

Today I Learned

[Git] Stash

yun_ 2025. 3. 23. 23:57
반응형

 

 

stash 기능은 전에도 자주 사용해 보았는데, 이번에도 기능개발 중에 stash를 사용하다가 몇 가지 몰랐던 명령어들을 알게 되어 정리를 해보려고 한다.

 

1. 기본 Stash 명령어

git stash

현재 작업 중인 변경 사항을 저장(stash)하고, 작업 디렉토리를 깨끗한 상태로 되돌린다.

git stash
  • 추적된(tracked) 파일의 변경 사항을 저장하고, 작업 디렉토리를 마지막 커밋 상태로 초기화한다.
  • 새로운 파일(추적되지 않은 파일, untracked)이나 무시된 파일(ignored)은 기본적으로 stash에 포함되지 않는다.

 

git stash push

보다 명확하게 stash를 저장하는 방법. 메시지와 함께 저장할 수도 있다.

git stash push -m "메시지"
  • -m 옵션을 사용하면 특정 메시지를 추가할 수 있어서 이후에 구별하기 쉽다.

 

2. stash 목록 확인

git stash list

현재 저장된 stash 목록을 확인한다.

git stash list

// 출력예시
stash@{0}: WIP on feature-branch: 123abc Commit message stash@{1}: WIP on main: 456def Commit message 
stash@{2}: WIP on develop: 789ghi Commit message
  • stash@{n} 형식으로 각 stash가 저장되어 있다.
  • 최신 stash가 stash@{0}, 그 이전 것이 stash@{1}, stash@{2} 순으로 쌓인다.

 

3. stash 적용 (복구)

git stash apply

stash의 내용을 현재 브랜치에 적용한다. 하지만 stash 목록에서 제거되지는 않는다.

git stash apply stash@{0}
  • stash@{0}을 현재 작업 디렉토리에 적용한다.
  • stash는 유지되므로 같은 stash를 여러 번 적용할 수 있다.

 

git stash pop

stash의 내용을 현재 브랜치에 적용한 후 stash 목록에서 제거한다.

git stash pop stash@{0}
  • apply와 달리 stash에서 삭제된다.
  • stash가 목록에서 삭제되므로 신중하게 사용해야 한다.

 

4. stash 내용 확인

git stash show

stash의 변경된 파일 목록을 확인한다.

git stash show stash@{0}

// 출력예시
src/app.js | 2 ++ src/style.css | 1 +
  • 어떤 파일이 변경되었는지 확인할 수 있다.

 

git stash show -p

stash에 저장된 변경 사항의 상세(diff) 내용을 확인한다.

git stash show -p stash@{0}
  • -p 옵션을 추가하면 git diff처럼 변경된 코드가 표시된다.

 

5. 특정 파일만 stash에서 복구

git checkout stash@{0} -- 파일명

stash의 특정 파일만 가져오고 싶을 때 사용합니다.

git checkout stash@{0} -- src/app.js
  • src/app.js 파일만 stash에서 가져온다.
  • 전체 stash를 적용하지 않고 특정 파일만 복구할 수 있다.

 

6. stash 삭제

git stash drop

특정 stash를 목록에서 삭제한다.

git stash drop stash@{0}
  • stash@{0}을 삭제한다.
  • 복구가 불가능하므로 신중하게 사용해야 한다.

 

git stash clear

모든 stash를 삭제한다.

git stash clear
  • stash 목록을 완전히 비운다. 
  • 되돌릴 방법이 없으므로 주의 필요!

 

7. 특정 stash를 새로운 브랜치로 만들기

git stash branch

stash의 내용을 새로운 브랜치로 체크아웃하여 적용한다.

git stash branch new-branch-name stash@{0}
  • stash를 적용할 새로운 브랜치를 자동으로 생성한다.
  • stash의 변경 사항을 복구하면서 기존 stash는 유지된다.

 

GPT가 말해준 그 외 유용한 stash 명령어 정리


명령어 설명
git stash 현재 변경 사항을 stash에 저장
git stash push -m "메시지" 메시지를 추가하여 stash 저장
git stash list stash 목록 확인
git stash show stash@{n} 특정 stash 변경 사항 요약 확인
git stash show -p stash@{n} 특정 stash 변경 사항 상세(diff) 확인
git stash apply stash@{n} 특정 stash 적용 (삭제되지 않음)
git stash pop stash@{n} 특정 stash 적용 후 삭제
git checkout stash@{n} -- 파일명 stash에서 특정 파일만 가져오기
git stash -u untracked 파일도 포함하여 stash 저장
git stash -a ignored 파일까지 포함하여 stash 저장
git stash drop stash@{n} 특정 stash 삭제
git stash clear 모든 stash 삭제
git stash branch new-branch-name stash@{n} stash를 새로운 브랜치로 복구

 

반응형

'Today I Learned' 카테고리의 다른 글

[DEV] curl  (0) 2025.03.30
[Tomcat] Tomcat의 war-tracker 파일  (0) 2025.03.28
[Java] META-INF 디렉토리와 MANIFEST.MF  (0) 2025.03.12
[Java] try-with-resources (자원 관리 최적화)  (1) 2025.03.11
[DEV] SBOM에 대하여  (0) 2025.03.09