본문 바로가기
카테고리 없음

깃 Stash 개념과 사용 예시

by cook_code 2023. 7. 27.
반응형

안녕하세요

오늘은 깃의 stash 개념에 대해 소개하고 소스트리를 활용해 stash를 사용하는 법에 대해 포스팅하겠습니다.

깃 브랜치 개념 이해하기

stash를 이해하기 위해서는 깃 branch 개념에 대한 이해가 선행되어야 합니다.

branch(번역: 나뭇가지)는 이름에서도 알 수 있듯,

하나의 프로젝트에 여러 갈래의 가지를 뻗어 여러 개발자가 함께 하나의 master 브랜치를 완성해나가는 개념입니다.

branch는 하나의 이슈당 하나씩 만들어지고,

그 이슈가 해결되면 master 브랜치에 merge되고 해당 branch는 삭제되는 것이 원칙입니다.

개발자들은 자신이 개발한 소스를 commit / push 해서 자신의 로컬 / 원격 브랜치를 운영합니다.

한 개의 commit에는 한 개의 변경사항만을 담는 것이 원칙이지만 때에 따라

- 대시를 사용해 설명을 덧붙여 여러 개의 변경사항을 포함하기도 합니다.

 

깃 STASH 란?

 

그렇다면 메인 주제였던 stash로 다시 돌아와서 stash는 어떤 경우에 사용될까요?

stash는 아직 마무리하지 않은 작업을 스택에 잠시 저장할 수 있도록 하는 명령어 입니다.

  • 브랜치 이슈번호와 이슈의 내용이 일치하지 않는 경우
  • 급하게 우선순위가 먼저인 일들을 수행해야 하는 경우

이런 경우에 개발자는 커밋하지 않은 변경사항을 잠시 담아둘 공간이 필요합니다.

이러한 기능을 깃에서는 stash 라고 부릅니다. 

 

소스트리에서 stash 사용하기

https://howtomakecode.tistory.com/142
※ 깃 사용을 편리하게 도와주는 GUI 툴인 소스트리에 대해 알고싶다면 위 링크를 참고해주세요.

이해를 위해 상황을 가정해보겠습니다.

MASTER 브랜치가 있고,
A 개발자가 A 브랜치에 작업 중, 
B 개발자가 B 브랜치에 작업 중인 상황입니다.  

A 개발자와 B 개발자는 각자의 브랜치에서 작업 후 MASTER 브랜치에 MERGE를 하며 살고 있었습니다. 
어느날 A 개발자가 실수로 B 개발자의 브랜치에서 새로운 기능을 개발하고 말았습니다. 
B개발자도 A 개발자가 개발한 기능을 돌려주고 싶었지만 B 브랜치에서 가능한 것은 commit과 push, discard 뿐이었습니다. 
A 개발자는 생각했습니다. 
아하! 나한텐 가방이 있어! 내가 개발한 기능을 이 가방에 넣어서 가져갈게 
B 개발자는 A 개발자가 개발한 기능을 STAGE 영역에 올려놓았고, 
A 개발자는 STASH 기능을 사용해 자신이 개발한 기능을 가져가 APPLY 및 COMMIT 할 수 있었답니다. 

 

소스트리에서 위와 같은 상황을 재현해보도록 하겠습니다. 


- issue-2 브랜치에 issue-1에 있어야 할 수정사항이 있다고 가정할 때

issue-2 브랜치에서 해당 수정사항을 stage 영역에 올립니다.

- stage 영역에 올라간 파일은 stash가 가능한 상태가 됩니다.

- 활성화 된 stash 버튼을 클릭합니다.

- stash의 이름을 지정해줄 수 있지만 지정하지 않으면 임의의 값이 들어갑니다.

- 이제 원하는 브랜치로 checkout 후 stash 해둔 수정사항을 해당 브랜치에 commit, push 할 수 있습니다. 

stash 실무에서 유용하게 쓰일 수 있을 것 같아 포스팅으로 남겨보았는데요.

저는 좀 유치하게 기억해야 잘 기억하는 타입이라

잘 이해가 안가는 개념들은 이야기 형식으로 꾸며내서 이해하거나 

혼자 말하면서 외우곤 해요

아무튼... 깃은 배운만큼 저를 안심시켜 주는 것 같아요! 열심히 배워둬야겠습니다. 

반응형