#Git #Fork #Stash
Git의 기능 중 하나인 stashing에 대해 새롭게 알게 되어 포스팅해보자 한다.
Stashing이란?
한 가지 상황을 예로 들어보자.
어떤 프로젝트의 한 부분을 담당하는 중이다. 뭔가 작업하는 일이 있고, 갑자기 다른 요청이 들어와서 잠시 브랜치를 변경해야 할 일이 생겼다. 이런 상황에 아직 완료하지 않은 일을 커밋하는 것이 꺼려진다. (이전엔 하던 작업을 후딱 완료하고 브랜치를 변경하거나 정말 급하게 변경해야할 땐 "~~~하는중" 라고 commit 메세지를 남겼었던 기억이 있다..)
하지만, Stash 명령을 사용하면 커밋하지 않고 나중에 다시 돌아와 작업을 할 수 있다.
git Stash 명령은 워킹 디렉토리에서 수정한 파일들만 저장하게 된다. Stash는 Modified이면서 Tracked 상태인 파일과 Staging Area에 있는 파일들을 보관해두는 장소이다. 브랜치가 달라져도 이 저장공간은 그대로라 나중에 다시 불러와 적용할 수 있다.
즉, 한마디로 커밋하지 않고 따로 stash 공간에 저장해서 다른 브랜치에서 작업을 하고 돌아와 이어서 작업을 할 수 있도록 돕는 명령어이다.
터미널에서 사용하기
예제 프로젝트를 하나 살펴보자.
example 브랜치에서 ViewController 파일 하나를 수정하고, Sample 파일을 추가한다. 그리고 git status 명령어로 아래의 사진처럼 결과를 확인할 수 있다.
이제 브랜치를 바로 main으로 변경해보자. 아직 작업 중인 파일은 커밋할 게 아니라서 모두 stash한다. git stash, git stash save를 실행하면 새로운 stash가 만들어진다.
git stash
git stash save
그리고, staging area에는 깨끗해진 것을 확인할 수 있다. 이제 다른 브랜치로 checkout을 편하게 하면 된다.
다른 브랜치에서 작업을 모두 마치고, 이젠 example 브랜치로 다시 돌아와 작업을 이어서 하고 싶은 상황이라고 하자.
먼저, git stash list 명령을 통해 저장한 Stash를 확인을 하고,
맨 앞 Stash 저장 이름인 stash@{0} 를 복사하고 git stash apply [Stash 저장 이름] 명령을 통해 작업을 불러올 수 있다.
명령어들을 정리하면, 아래와 같다.
// stash하기
git stash
git stash save [알아보기 위한 이름]
// stash 리스트 보기
git stash list
// stash한 것 적용하기
git stash apply
git stash apply [Stash 이름]
Fork에서 사용하기
Stash 버튼은 직관적으로 가장 상단에 위치해있습니다. Stashing이 필요할 때 눌러서 이름을 입력하고 stash해줄 수 있다.
저는 세 개의 stash를 만들어서 사진에서 세개의 stash가 만들어진 것을 확인할 수 있다.
여기서 하나 더 알아간 것은 Stash 기능을 통해 snapshot도 만들 수 있다는 것이다. snapshot은 그 장면을 찍는다는 의미이지만, staging area에서 파일들을 깨끗하게 정리하지 않고 단지 저장만 하는 기능이다. 커밋은 하기 꺼려지는데, 한번 여기서 저장하고 싶을 때, 귀찮게 stash하고 다시 적용하기 싫을 때 사용해보자 👏🏻👏🏻👏🏻
출처
https://git-scm.com/book/ko/v2/Git-도구-Stashing과-Cleaning
'Git' 카테고리의 다른 글
[Github] Pull Request & Code Review (0) | 2020.12.20 |
---|