어떤 작업을 하던 중, 급하게 처리해야 하는 다른 작업건이 생겼다면, 그런데 그 우선작업건이 다른 브랜치에서 해야 하는 일이라면 어떻게 해야할까?
작업을 마무리하지 못한 상태에서 다른 브랜치로 이동하게 되면 아래와 같은 에러가 발생한다. 현재 브랜치에서 변경된 내용을 커밋하지 않았기 때문에, 아직까지 작업한 내용이 모두 사라지게 된다고 경고하는 것이다.
그렇다고 작업이 완료된 것이 아니니 커밋을 하기에도 부담스럽고... 하지만 우리의 깃에는 없는 것 빼고 다 있다. (훗) 이런 상황을 대비해서 코드를 임시저장할 수 있는 커맨드가 있다.
작업하던 코드 임시저장하고 싶을 때
아래와 같은 커맨드를 사용해서 작업하던 코드를 임시저장할 수 있다.
git stash
git stash를 한국어로 번역하면 '숨기는 장소'라고 한다. 이 커맨드를 사용하면 working directory에서 작업하고 있던 내용을 깃이 안전한 곳에 따로 보관하게 되며, 우리는 이 곳을 stack이라고 부른다.
cf. stack은 후입선출의 특징을 가지는 자료구조를 일컫는 말이기도 하다. 스택(자료구조)에 대해 더 자세히 알고 싶다면 아래 링크를 클릭해서 나무위키를 살펴보면 도움이 될 것이다.
https://namu.wiki/w/%EC%8A%A4%ED%83%9D(%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0)
다시 git stash로 돌아와서... 해당 커맨드를 실행하면 Saved working directory and index state WIP on ~ 이라는 문구와 함께 코드가 저장된다.
git stash 제대로 저장되었는지 확인하는 방법
git stash를 한 후에, 코드가 제대로 저장되었는지 확인하려면 아래와 같은 커맨드를 사용하면 된다.
git stash list
stack에 있는 내용 다시 불러오기
그리고 git stash를 사용하게 되면, 깃이 커밋 이후로 작업했던 내용을 모두 스택(숨겨진 장소)로 옮기고 working directory 내용을 초기화시킨다. 마지막으로 커밋한 버전으로 코드를 되돌리는 것이다. 때문에 다시 이어서 작업을 하려면 코드를 가져오는 과정이 필요하다. stack에 있는 내용을 다시 working directory로 가져오는 커맨드는 아래와 같이 입력하고 실행하면 된다.
git stash apply
위와 같은 메세지가 나온다면 다시 파일을 열어보자. 이어서 작업할 수 있도록 코드가 수정되어 있을 것이다. 작업을 마친 후 Staging Area로 옮기고 커밋까지 해주면 끝! 코드 임시저장, 실제로 자주 사용하는 유용한 기능인 것 같다.
'개발 도구 > Git' 카테고리의 다른 글
다른 브랜치에서 내가 원하는 커밋만 가져오고 싶을 때(git cherry-pick) (0) | 2022.12.19 |
---|---|
실수로 다른 브랜치에서 작업했을 때(git stash list/apply/drop/pop) (0) | 2022.12.15 |
머지 기록 없이 깔끔한 커밋 히스토리 관리하기(git rebase) (0) | 2022.12.13 |
git reset 되돌리고 싶을 때 커밋 리스트 확인하기(git reflog) (0) | 2022.12.10 |
git revert로 커밋 여러개 동시에 취소하기 (0) | 2022.12.08 |
댓글