인턴

WebStorm에서 shelve 활용하기

Hanee_ 2022. 1. 6. 14:37

shelve란?

작업하던 것을 멈추고, 또 다른 작업을 진행해야 할 때가 있다.

 

예를 들어, 심각한 문제가 발생해서 즉각적인 대응이 필요한 상황에서, 하고 있던 새 기능 개발 작업을 멈추고 그 상황에 대응 해야 한다. 지금까지 해왔던 작업을 커밋하고, 급한 이슈를 처리할 수도 있지만 종종 커밋 준비가 되지 않았거나 커밋한다고 해도 빌드가 깨지는 경우가 있다.

그래서 만약 로컬 변경 사항을 커밋할 수 없다면, 우리는 다른 곳에서 넣어두고 급한 이슈를 처리해야 한다.

Shelve는 이러한 작업을 가능하게 해준다. 로컬 변경 사항을 shelve에 저장하여 working copy를 깨끗한 상태로 돌려 놓고 다른 이슈에 대해 작업을 할 수 있다.

 

급한 이슈가 모두 처리가 되었다면, 당신은 저장되었던 작업을 unshelve하여 꺼내고, 전에 작업하던 것을 이어서 계속 할 수 있다. 

 


 

WebStorm(웹스톰)에서 shelve기능을 활용해보자

 

간단한 test.py 파일을 생성하였다.

파일을 수정하고, 좌측 commit 란에 들어가보면, 다음과 같이 changelist에 test.html이 올라가 있는 것이 보인다.

Shelve 버튼을 누른다. 이때, 이름은 수정 가능. 위 경우 1로 지정하였다

좌측 shelf를 보면, 방금 shelve 뜬게 업로드 되어있는 것이 보인다. 하지만, 좌측의 코드에선 앞서 추가했던 <h1>change<h1>태그가 보이지 않고 원본 코드가 보인다.

같은 방식으로 두번째 shelve도 생성하였다

각 shelve를 더블클릭해보면, 어느 곳에서 수정이 생겼는지 확인할 수 있다.

 

여기서, 1번 파일을 unshelve 해보자. 마우스 우클릭을 한 뒤, unshelve를 누르면 된다.

다음과 같은 창이 뜨고, unshelve를 누른다.

반영 된 것을 볼 수 있다

shelve 2를 unshelve하면 다음과 같이 conflict 창이 뜨는데, 코드를 비교해서 적절하게 넣으면 된다.

 


 

git-flow, 언제 사용할 수 있을까?

브랜치를 잘못 만들어 다른 브랜치로 이동할 때, 사용할 수 있다.

 

예를들어 A브랜치에서 b 브랜치를 만들어 작업중이었는데, 알고보니 B 브랜치에서 작업을 해야했던 경우를 예로 들어보자. 그러면, b 브랜치에서 작업하던 작업물 shelve 떠 놓고, B브랜치로 이동한 뒤, unshelve하면 된다!

 

shleve는 일종의 임시 저장소의 개념으로 생각하자