SCM/Git

[Git & GitHub 6] git stash

ride-dev 2024. 5. 10. 11:52

git stash, git stash push, git stash save, git stash pop, git stash apply, git stash list, git stash drop, git stash clear

0. git stash란?

git stash를 사용하여 변경사항을 임시로 저장합니다.

(커밋하지 않은 변경사항을 임시 저장합니다)

물론 commit할 준비가 되지 않은 것도 commit할 수 있습니다.

(commit이력을 잘 남기고 싶다면 git stash를 활용합니)

 

git stash를 통해, commit하지 않고 브랜치 간 이동을 가능케 합니다.

 

특정 파일을 작업 중일 때 브랜치를 이동하면,

두 가지 상황이 발생할 수 있습니다.

1. 이동한 브랜치의 작업 공간에 그 파일의 변경사항이 입력됩니다.

2. 작업 중이던 파일이  충돌하면 브랜치를 이동할 수 없습니다.

이 때, 변경사항을 commit하거나 stash해야 브랜치를 이동할 수 있습니다.

git stash

git stash 명령어를 사용하면, working directory의 변경사항을 임시 저장하고,

working directory를 HEAD 커밋과 일치하도록 되돌립니다.

git stash list

stash 리스트를 확인합니다.

1. git stash push

git stash push명령어를 통해 변경사항을 임시저장합니다.

git stash save

git stash save를 사용할 수 있지만, 최신 버전에서는 push를 권장합니다.

 

-m 또는 --message 옵션을 사용하여 stash에 설명을 추가할 수 있습니다.

git stash push -m "메시지"

git stash push 명령어는 특정 파일이나 경로만 stash할 수 있습니다.

git stash push 파일1 파일2

2. git stash pop

git stash pop 명령어는 git stash push와 반대되는 명령어로,

stash 목록에서 하나의 stash를 제거하고,

현재 작업 디렉토리에 적용합니다.

 

특정 stash를 지정할 수 있습니다.

(기본값은 가장 최근의 stash 입니다)

작업
git stash push
git stash pop

3. git stash apply

git stash apply 명령어를 사용하면 pop과 비슷하게 동작하지만,

stash 영역에 stash를 남깁니다.

git stash apply

다양한 브랜치에 하나의 stash를 적용해야한다면 유용할 수 있습니다.

git stash apply 예시

git stash list로 stash 목록을 확인하고, 특정 stash를 참고하도록 할 수 있습니다.

$ git stash list
stash@{0}: WIP on security: 6051009 create member
stash@{1}: WIP on security: 6051009 create member
stash@{2}: WIP on security: 6051009 create member
git stash apply stash@{1}

4. git stash drop [<stash>]

git stash pop 명령어를 사용하면 stash가 삭제되면서 적용되지만,

apply는 stash를 남깁니다.

git stash drop 명령어를 사용하면 가장 최근의 stash 를 삭제합니다.

git stash drop

git stash list로 확인한 특정 stash를 삭제할 수도 있습니다.

git stash drop stash@{1}

git stash clear

만약, stash를 완벽하게 비우고 싶다면 git stash clear 명령를 사용합니다.

728x90