Programming/Git

[Git] Stash 개념과 사용 방법 - Commit 할 수는 없는데 브랜치 전환이 필요할 때!

erinh 2023. 4. 23. 21:38
반응형

[들어가기 전에]

프로젝트를 하다보면 종종 아직 작업한 부분이 Commit을 할 수는 없는 상태인데
브랜치 변경을 해서 다른 브랜치에서 작업이 급하게 필요할 때 현재 작업한 부분을 어떻게 해야할지..?애매한 상황이 종종 발생하곤 했었다!

그럴 때 파일의 변경 사항들을 임시적으로 저장할 수 있는 것이 Git Stash!

이번에 강의를 들으면서 새롭게 알게 되었다. 역시 안되는건 없다,,

[Git Stash 개념]

: 아직 완성되지 않은 작업을 스택에 임시 저장할 수 있도록 하는 깃 명령어
- stash는 워킹 디렉토리에서 수정한 파일들만 저장(아래 2가지 종류의 파일)
1) Modified & Tracked 상태의 파일 

2) Staging Area에 있는 파일(Staged 상태의 파일)

[사용 방법]

1. 하던 작업 stash에 임시 저장

# 새로운 stash 만들기
$ git stash push -m "message" 

# stash를 만들지만 현재 있는 애들 staging area에 남겨 놓기 (원래 stash 하면 사라짐)
$ git stash --keep-index

# untracked 파일도 포함하여 stash에 옮기기
git stash -u

stash에 작업중인 파일들을 저장하고 나서 새로운 작업을 위해 다른 브랜치로 변경 가능

2. stash 목록 확인

# 모든 stash 목록 조회
$ git stash list

3. stash 적용하기 (했던 작업 가져오기)

# 가장 최근의 stash를 가져와 적용
$ git stash apply

# stash 해쉬 값을 가져와 적용
$ git stash apply hash

# stage한 상태까지 모두 원복하려면 --index 옵션 붙여줘야 함
$ git stash apply --index

# stash를 적용한 후 해당 stash를 목록에서 바로 삭제
$ git stash pop

4. stash 삭제하기

# 가장 최근의 stash 제거
$ git stash drop

# 해시값에 해당하는 stash 제거
$ git stash drop hash

# 전체 stash 삭제
$ git stash clear
반응형