[Github 협업, 이것만은 알자] - Stash

pgmjun·2024년 1월 14일
6
post-thumbnail

Stash를 알게되면 깃을 사용하는 작업에 새로운 눈이 뜨이게 됩니다.

💭 Stash는 이럴 때 사용합니다

A브랜치에서 코드 작성 도중 B브랜치 코드에 대해 볼일이 생겼을 때,
A브랜치의 작업 내용을 잠시 저장해놓는 용도로 사용

만약 stash 하지 않고 브랜치를 이동하게 되는 경우, 두 브랜치 사이에 상태가 다른 동일한 파일이 존재하면 문제가 발생합니다.

예를 들어 A.java 파일의 11번째 코드 라인B브랜치에선 int a = 1; 인데
A브랜치에선 이를 int a = 2; 로 변경했다던지의 상황입니다.

쉽게 말해 같은 파일같은 코드 라인인데 상태가 서로 상이한 상태인 것입니다.

잘못 조치하는 경우, 두 브랜치 사이에 충돌이 발생할 수 있으며
심한 경우 커밋되지 않은 파일들이 모두 증발해버릴 수 있습니다.

💡 전부 제 경험담입니다…😭



⚙️ Stash 사용법

1. 임시저장소에 작업내용 스태시

$ git stash push -u -m "작업 내용 설명"

A브랜치에서 terminal을 켜서
git stash push -u -m "작업 내용에 대한 설명" 명령을 통해 .gitIgnore에 등록되어있는 추적하지 않는(untracked) 파일을 포함해 임시 저장소에 stash합니다.

  • -u 옵션이 작동하지 않는다면 git stash push --include-untracked -m "메시지” 형태로 사용

2. 브랜치 변경 후 작업 수행

작업을 위해 B브랜치로 이동 후 작업을 수행


3. 임시저장소에서 스태시한 작업 내용 조회

$ git stash list
stash@{0}: WIP on main: 049d078 added the index file
stash@{1}: WIP on main: c264051 Revert "added file_size
stash@{2}: WIP on main: 21d80a5 added number to log

B브랜치에서 작업을 마친 후 A브랜치로 돌아와서 git stash list 명령을 통해 stash 해두었던 작업 내역을 조회합니다.


4. 작업내용 되찾기

// 작업내용 불러온 이후 저장소에서 삭제
$ git stash pop stash@{ID}
// 작업내용 불러온 이후 저장소에 유지
$ git stash apply stash@{ID}

git stash pop stash@{ID} 명령을 통해 임시 저장소에 스태시 해두었던 작업 내용을 다시 되찾고, 임시 저장소에 스태시했던 내용 삭제합니다.

  • pop 명령을 수행하면 임시저장소에 스태시한 내용은 적용과 동시에 삭제됩니다.
  • 만약 임시저장소에서 스태시한 내용을 제거하지 않고 싶다면, git stash apply 명령을 사용합니다.
profile
하나씩 천천히 깊이있게 쌓아가는 백엔드 개발자 최승준입니다.

1개의 댓글

comment-user-thumbnail
2024년 1월 14일

너무너무 도움되는 글 감사합니다 (꾸벅) 💪🏻💛

답글 달기