git stash
를 이용해서 변경 사항들을 임시 저장할 수 있습니다.
master 브랜치에서 작업하다가 커밋을 하고, 새로운 브랜치를 만들어서 새로운 브랜치로 이동한 후 여러 변경사항들을 만들었다고 가정합시다.
이 변경사항들을 아직 커밋하지 않았는데, 다시 master 브랜치로 돌아가야 할 일이 생겼습니다.
git switch master
어떤 일이 발생할까요?
- 아직 커밋하지 않은 변경사항들이 master 브랜치로 따라옵니다.
변경 사항들에 충돌이 발생하지 않는 한 내가 새로운 브랜치에서 작업한 내용들이 내가 master 브랜치로 이동할 때 따라올 것입니다
- master 브랜치로 이동하지 못하게 막습니다.
파일 사이에 충돌이 발생하여 새 브랜치에서 작업한 내용을 master 브랜치로 가져올 수 없는 경우, 브랜치를 이동하지 못하게 막습니다.
크게 세 가지 방법이 존재합니다.
- 충돌이 발생하지 않는 경우 그냥 옮긴다.
문제가 있습니다. 충돌이 발생하지 않아서 다행이도 master 브랜치로 문제없이 돌아갈 수 있었지만
내가 새로운 브랜치에서 작업했던 변경사항들이 모두 따라와서 내가 알던 master 브랜치의 마지막 모습이 아닐 수 있습니다.
심지어 따라온 작업들이 마무리 되지 않은 작업들이라면 더 맘에 안 들 수 있습니다.
- 현재까지 만든 변경 사항(작업)을 커밋하고 이동한다.
하지만 여기서도 문제가 있습니다. 내가 현재까지 한 작업이 아직 마무리 되지 않아서 커밋을 할 수 없는 경우 문제가 됩니다.
고작 브랜치를 이동하기 위해서 모든 작업들을 마무리하고 커밋까지 한 후 브랜치를 이동해야 하는 것은 너무 불편합니다.
심지어 브랜치를 이동해야 하는 이유가 별 같지도 않은 사소한 이유라면 커밋까지 한 후 이동해야 한다는 사실이 화가 날지도 모르겠습니다.
- 현재까지 만든 변경 사항들을 임시로 저장하고 이동합니다.
현재까지 만든 변경 사항들을 임시로 저장한다면 굳이 아직 완료되지 않은 작업을 커밋하여 더러운 커밋 이력을 남기거나 할 필요가 없습니다.
git stash or git stash save
명령을 실행하면 그 동안 작업했던 변경 사항(stage에 올렸던 올리지 않았던 모든 변경 사항을 말합니다.)을 임시로 저장하여 다른 임시 공간(스태시(stash))에 보관했다가
다른 브랜치로 이동해서 급했던 작업을 마무리 한 후, 다시 돌아와서
git stash pop
가장 최근에 임시로 저장한 변경 사항들을 working tree로 복원할 수 있습니다.
stash pop
은 스태시 영역에 있던 임시 저장 작업물을 스태시 영역에서 삭제하고 동시에 working tree로 복원합니다.
git stash apply
apply
는 스태시 영역에 있던 작업물을 working tree에 복원하지만 스태시 영역에서 삭제하지는 않습니다.
다른 브랜치에도 혹시나 이 임시 작업물을 적용해야 할 일이 있다면 apply
가 유용할 것입니다.
git stash
를 여러 번 수행할 수 있습니다.
그럼 stash 영역에 임시 저장한 작업물들이 순서대로 쌓이게 됩니다.
stash 영역에 얼마나 많은 stash가 있는지 확인하려면
git stash list
위 명령어를 실행하여 확인할 수 있습니다.
각 stash들은 서로 다른 stash를 구별할 수 있는 아이디를 가지고 있습니다.
stash@{0}
stash@{1}
stash@{2}
...
이런식으로 각 stash에는 뒤에 골뱅이(at sign)와 번호가 붙습니다.
이 아이디를 이용하여 적용할 stash를 골라서 적용할 수도 있습니다.
git stash apply stash@{1}
그런데 apply를 사용하면 stash 영역에 있는 stash들을 삭제하지 않는다고 했습니다.
그렇다면 실제로 직접 지워주기도 해야합니다.
git stash drop stash@{1}
아니면 그냥 통째로 stash 영역에 있는 stash들을 지울수도 있습니다.
git stash clear
다음 포스팅에서는 stash 명령어를 연습해보겠습니다.
🙏🙏🙏
git 시리즈에 작성한 포스팅은
https://www.udemy.com/course/best-git-github/
유데미 강좌
https://www.yes24.com/Product/Goods/110795446
모두의 깃 & 깃허브
위 내용을 참고하였으며, 제 실습화면을 캡쳐한 사진 외의
대부분의 사진들은 인터넷 강좌에서 제공하는 자료를 캡쳐하였습니다.
깃 시리즈 포스팅의 내용 및 사진을 절대로 상업적 목적으로 무단 복사하지 말아주세요.