스태시(Stash) - 개념
처음 학습을 시작하면서 실습을 위해 만들었던 저장소를
다음의 그림을 보면서 상기해 보겠습니다.
firstrepo라는 폴더를 만들고
$ git init 를 통해 Git을 초기화함으로 해서
firstrepo 폴더가 Git을 통한 버전관리 영역으로 만들었습니다.
이렇게 만든 Git 영역은
기본이 되는 master 브랜치라는 작업자가 생기게 되고,
master를 포함해 추가로 가지가 뻗어 나가듯이
hotfix 브랜치와 bugfix 브랜치를 만들 수 있습니다.
이렇게 만들어진 Git영역(firstrepo 폴더)에서 작업하는 소스들은
워킹 디렉토리에서 작업이 이뤄지는 것이 되고,
스테이지 영역을 통해 커밋할 인덱스를 구성하고,
이렇게 스테이지 영역에 구성한 소스들은
커밋을 통해 저장소에 기록이 되고
이는 곧 커밋 이력으로 남겨지게 됩니다.
작업 브랜치를 변경하기 위해서는
워킹 디렉토리(스테이지 영역 포함)가 정리되어야 했습니다.
워킹 디렉토리를 정리한다는 것은 커밋을 해야 한다는 것입니다.
다시 말해, 작업 브랜치를 변경하기 위해서는
현재 브랜치에서 작업하던 내용을 모두 커밋한 후에 변경해야 하는 것입니다.
그런데, hotfix 브랜치에서
어떤 기능을 추가하는 작업을 하고 있는 와중에,
다른 수정할 부분을 먼저 급하게 처리를 해야 한다면 어떨까요?
작업하고 있던 부분이
반영이 되면 안되기 때문에 커밋을 할 수는 없습니다.
한 가지 방법은
일단 현재 작업 중인 브랜치(hotfix)의 내용을 커밋을 하고,
다른 브랜치(bugfix)를 하나 만들어서 긴급작업을 한 후 적용하고,
긴급하게 만든 브랜치(bugfix)는 삭제한 다음,
다시 작업하던 브랜치(hotfix)로 돌아가
앞서 수정했던 사항을 hotfix에 반영하기 위해
master의 내용을 hotfix로 병합하고,
작업을 이어갈 수 있습니다.
뭔가 복잡하지만 이 또한 방법이 될 수 있습니다.
다른 방법으로 이럴 경우 ‘스태시’ 기능을 활용할 수 있습니다.
스태시(stash)는
아직 마무리 하지 않은 작업을
스택에 잠시 저장할 수 있도록 하는 명령어입니다.
스태시를 이용하면
아직 완료하지 않은 작업을 커밋하지 않고
나중에 다시 꺼내서 마무리할 수 있습니다.
스태시(stash) 명령을 사용하면
현재 작업 중인 내용은 임시 저장되고,
수정 전 마지막 커밋 상태로 돌아갑니다.
다시 말해 이전 커밋 후
작업하지 않은 상태의 워킹 디렉터리로 만듭니다.
스태시는 로컬 저장소에서만 사용이 가능합니다.
다음에 실제 상황을 만들어 보고
스태시를 사용하는 것을 실습을 통해 확인해 보겠습니다.
감사합니다.
'코딩해보니 > Git' 카테고리의 다른 글
[Git_39] 서버(원격) 저장소 이해하기 (0) | 2023.03.23 |
---|---|
[Git_38] 스태시(Stash) - 사용하기 (0) | 2023.03.02 |
[Git_36] 리베이스(rebase)로 커밋(commit) 수정하기 (ft.충돌) (0) | 2023.01.26 |
[Git_35] 리베이스(rebase) - 이해하기(개념 잡기) (0) | 2023.01.24 |
[Git_34] 리베이스(rebase) - 무작정 따라하기 (1) | 2023.01.17 |
댓글