안녕하세요
오늘은 깃의 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 실무에서 유용하게 쓰일 수 있을 것 같아 포스팅으로 남겨보았는데요.
저는 좀 유치하게 기억해야 잘 기억하는 타입이라
잘 이해가 안가는 개념들은 이야기 형식으로 꾸며내서 이해하거나
혼자 말하면서 외우곤 해요
아무튼... 깃은 배운만큼 저를 안심시켜 주는 것 같아요! 열심히 배워둬야겠습니다.