
Stash를 알게되면 깃을 사용하는 작업에 새로운 눈이 뜨이게 됩니다.
A브랜치에서 코드 작성 도중 B브랜치 코드에 대해 볼일이 생겼을 때,
A브랜치의 작업 내용을 잠시 저장해놓는 용도로 사용
만약 stash 하지 않고 브랜치를 이동하게 되는 경우, 두 브랜치 사이에 상태가 다른 동일한 파일이 존재하면 문제가 발생합니다.
예를 들어 A.java 파일의 11번째 코드 라인이 B브랜치에선 int a = 1; 인데
A브랜치에선 이를 int a = 2; 로 변경했다던지의 상황입니다.
쉽게 말해 같은 파일의 같은 코드 라인인데 상태가 서로 상이한 상태인 것입니다.
잘못 조치하는 경우, 두 브랜치 사이에 충돌이 발생할 수 있으며
심한 경우 커밋되지 않은 파일들이 모두 증발해버릴 수 있습니다.
💡 전부 제 경험담입니다…😭
$ git stash push -u -m "작업 내용 설명"
A브랜치에서 terminal을 켜서
git stash push -u -m "작업 내용에 대한 설명" 명령을 통해 .gitIgnore에 등록되어있는 추적하지 않는(untracked) 파일을 포함해 임시 저장소에 stash합니다.
git stash push --include-untracked -m "메시지” 형태로 사용작업을 위해 B브랜치로 이동 후 작업을 수행
$ 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 해두었던 작업 내역을 조회합니다.
// 작업내용 불러온 이후 저장소에서 삭제
$ git stash pop stash@{ID}
// 작업내용 불러온 이후 저장소에 유지
$ git stash apply stash@{ID}
git stash pop stash@{ID} 명령을 통해 임시 저장소에 스태시 해두었던 작업 내용을 다시 되찾고, 임시 저장소에 스태시했던 내용 삭제합니다.
git stash apply 명령을 사용합니다.
너무너무 도움되는 글 감사합니다 (꾸벅) 💪🏻💛