-
[github] 일종의 임시저장, git stash 사용법공부하는 글른 2021. 3. 11. 23:49
우리에게 git stash는 언제 필요한가?
A 브랜치에서 작업을 해야 했는데, 실수로 master에서 작업을 진행해 버렸다!
혹은 A 브랜치에서 작업을 진행하던 중에 B 브랜치의 issue를 급하게 처리해야 할 경우, A 브랜치 내용을 임시저장하고 싶다!
이런 경우에 git stash를 사용할 수 있습니다.
Git stash란?
완료하지 않은 작업을 stack에 임시로 저장하는 명령어로, git stash를 사용하여 commit하지 않고 후에 다시 가져와서 작업을 마무리할 수 있다.
Step 1 : stash에 작업을 임시로 저장하기
git branch 명령어를 통해서 새로운 branch로 이동하려고 했으나, 아뿔싸! Your local changes to the following files would be overwritten by checkout 라는 달갑지 않은 warning이 떴다.
git status 명령어를 통해서 아래와같이 master branch에서 수정된 파일을 확인할 수 있다.
원래 master branch가 아니라 object2 branch에서 작업을 시작했어야 했는데, 실수로 master branch에서 작업을 (상당히) 진행한 상황이다.
따라서 master branch에서 작업한 내용을 object2 branch에서 commit 하기 위해 stash를 사용하려고 한다.
git stash 혹은 git stash save 명령어를 통해서 새로운 stash를 만들고 작업을 임시저장할 수 있다.
stash 명령어 이후에 git status와 git branch 명령어의 결과가 이전과 달라졌음을 확인할 수 있다.
object2 branch로 성공적으로 checkout 했다.
Step 2 : git stash apply
object2 branch에서 commit을 하기 위해서 혹은 맨 앞의 예시 상황 중 두 번째의 경우 B 브랜치의 작업을 마치고 A 브랜치로 돌아오고 싶은 경우, 우리는 임시저장한 작업 내용을 다시 불러와야한다. 이때 사용하는 것이 git stash apply 명령어다.
(현재 xcode를 다루는 중이라 project.pbxproj 파일은 자동 merge를 막아둬서 confilct가 떴다.)
git stash apply를 통해 위와 같이 stash에 임시저장 되어있던 작업 내용을 원래 작업하던 생타로 돌렸다.
추가적인 stash 관련 명령어
git stash list : 간혹 작업을 하다가 여러 차례 stash 명령을 사용하여 여러 임시저장을 생성할 수 있는데, 해당 명령어를 통해 stash 목록을 확인할 수 있다.
git stash apply [stash name] : git stash list를 통해 확인한특정 stash를 불러와 적용하는 명령어다.
git stash apply --index : git stash apply와 동일하지만 기존의 staged 상태까지 복원해주는 명령어다.
git stash drop 혹은 git stash drop [stash name] : stash apply 이후에도 stash는 여전히 남아 있는데, 이를 제거하는 명령어다.
git stash pop : stash apply + stash drop이라고 생각하면 된다.
git stash show -p | git apply -R : 실수로 잘못 stash apply한 것을 되돌리기 위해 사용하는 명령어다. (사용할 일이 없음 좋겠...)
reference
git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning
gmlwjd9405.github.io/2018/05/18/git-stash.html
'공부하는 글른' 카테고리의 다른 글
Operating System: Threads (Chapter 5) (0) 2022.03.08 Operating System: Process (Chapter 4) (0) 2022.03.07 [Tensorboard] 설치 및 간단한 사용법 with Pytorch (2) 2020.08.28 [tmux] 기초 사용법 정리 (0) 2020.08.24 [github] 내가 자꾸 까먹어서 정리하는 git 사용법 (0) 2020.05.05