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는 일종의 임시 저장소의 개념으로 생각하자
'인턴' 카테고리의 다른 글
[ Angular ] Decorator 알아보기 / @ViewChid / @ViewChildren (0) | 2022.01.21 |
---|---|
[ Ionic / Angular ] 스크롤 특정 위치로 이동시키기 (0) | 2022.01.20 |
git flow 이해하기 (0) | 2022.01.07 |
Angular | 앵귤러란? / 앵귤러 장단점 / SPA(Single Page Application) (0) | 2022.01.06 |
이슈 해결 시 개발자 도구 활용법 (0) | 2022.01.06 |