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
명령을 사용합니다.
너무너무 도움되는 글 감사합니다 (꾸벅) 💪🏻💛