본문 바로가기
Linux/Git

Git stash 이해 및 사용법

by 시바도지 2022. 8. 9.
반응형

개요


Git에 익숙하지 않다면, 하던 작업을 멈추고, branch를 변경하여 다른 작업을 해야 하는 상황이 온다면 굉장히 난감할 것이다.

필자 또한 처음 협업 과정 중 이러한 상황이 발생했을 때 매우 난감하였다.

그래서 처음에는 여러개의 디렉토리를 생성하여, 각 디렉토리 별로 클론을 받은 후 작업을 진행하거나, 수정한 파일을 따로 복사 붙여넣기를 하는 등 매우 비효율 적이고, 나중에는 어느 디렉토리에서 작업을 하였는지 헷갈릴 때가 많았다. 

 

 

하지만 이 글을 읽는다면 git stash를 어느정도 사용할 수 있을 것이다.

 

 

먼저 stash를 영어사전에 검색하면 다음과 같다.

 

출처 : 네이버 검색

넣어두다....

 

그렇다. stash는 '(안전한 곳에) 넣어 두다' 는 뜻이다.

 

 

이것만 알아도 당신은 stash를 이해하기에 앞서 목표를 50% 달성하였다고 본다.

 

 

만약 임의의 Branch에서 작업을 진행하던 중 파일을 수정했다면 `git status` 명령어를 입력하면 수정한 파일을 볼 수 있다.

 

명령어를 입력하였는가?

그렇다면 `git stash` 명령어를 입력해보자.

.

.

.

 

수정했던 파일들이 수정하기 전 상태로 돌아가 버린다.

지금까지 작업헀던 것들을 다 날려 버린 것인가???

 

아니다.

 

git stash list 명령어를 쳐보면 stash@{0} 이라는 출력을 볼 수 있다.

이는 지금까지 작업 했던 것들을 stash라는 작은 상자에 안전하게 넣어둔 상태이다.

그러면 이 상자에서 다시 꺼내려면 어떻게 해야할까?

 

git stash apply stash@{0} 명령어를 입력하면 된다.

그러면 수정하기 전 상태에서 지금까지 작업 했던 것들을 불러온 것을 볼 수 있다.

 

 

 

 

 

명령어


다음은 알아두면 유용한 git stash 명령어다.

 

명령어 설명
git stash 하던 작업 stash에 저장
git stash save "[이름 지정]" git stash 명령어와 같지만 stash의 이름을 지정할 수 있다.
git stash list stash의 목록 확인
git stash apply [stash 이름] stash를 적용한다. 이때 팁을 주자면 `git stash apply `까지 입력을 한 후 tab을 누르면 stash@{[번호}] 까지 자동 완성이 되므로 참으로 유용하다.
git stash drop 가장 최근의 stash를 삭제한다.
git stash drop "[stash 이름]" 해당 이름의 stash를 삭제한다.
git stash pop stash 적용과 동시에 stash를 삭제한다. (apply + drop)
git stash clear stash에 있는 모든 작업들을 삭제한다. 즉, 모든 stash를 drop 한다.

 

 

 

상황별 stash 사용


1. 작업 중 Branch를 변경한다고??

git status     # 수정중인 파일을 확인 (생략 가능)
git stash
git stash list # Stash에 넣은 작업 확인 (생략 가능)
git checkout [변경할 Branch 명]

 

 

2. Remote에 있는 Branch에서 수정된 파일을 git pull 받으려는데 충돌이 난다고??

git status     # 수정중인 파일을 확인 (생략 가능)
git stash
git pull
git stash apply stash@{[Stash 번호]}

 

 

 

정리


Stash는 작은 상자다.

git stash 명령어를 입력하면 지금까지 작업한 것들이 사진에 찍혀서 작은 상자에 들어간다.

상자에 사진이 들어가면 지금까지 했던 작업들이 이전의 상태로 되돌아 간다.

상자에 있는 사진을 꺼내서 작업했던 과정들을 되돌릴 수 있다.

 

 

 

 

 

참고


반응형

댓글