git stash
Modified이면서 Tracked 상태인 파일과 Staging Area에 있는 파일들을 보관해두는 장소
아직 끝내지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있음(브랜치가 달라져도 가능)
❓ 사용하는 이유
- 작업중 갑작스럽게 다른 작업을 진행해야 할 때
- 아직 커밋하기엔 이른 경우
- 다른 브랜치로 체크아웃할 때 변경사항을 유지하고 싶은 경우
(나는 체크아웃 할 때 이 메세지를 가장 많이 보는 듯하다.)
💻 명령어 사용해보기
파일을 하나 추가하고, 수정한 파일들을 git add 로 Staging Area 에 추가하였다.
git stash
git stash 명령어를 입력하니 워킹디렉토리가 깨끗해졌다.
이제 원하는 브랜치로 문제없이 이동할 수 있다.
git stash list
0번째로 저장되어있는 하나의 stash를 확인할 수 있다.
git stash apply
원하는 브랜치로 돌아와서 git stash apply 명령어를 사용해서 저장한 stash 를 적용할 수 있다.
git stash apply stash@{1}
여러개의 stash가 있는 경우, git stash apply stash@{1} 처럼 골라서 적용할 수 있다.
git stash apply --index
stash를 적용할 때 staged 상태였던 파일을 자동으로 다시 staged 상태로 만들어 주지 않으므로 --index 옵션을 추가하면 staged 상태까지 적용할 수 있어 원래 작업하던 상태로 돌아올 수 있다.
git stash drop
apply 옵션을 단순히 stash를 적용하는 것이므로 여전히 stash가 스택에 남아있다. 이때 git stash drop 명령어로 해당 stash를 제거할 수 있다.
git stash pop
해당 명령어는 stash를 적용하고 나서 바로 스택에서 제거해준다.
git stash --keep-index
Staging Area 에 들어 있는 파일을 stash 하지 않는 명령어
🙂 느낀점
이전 팀 프로젝트를 할 때 나는 아직 기능 작업 중이었는데 다른 팀원이 작업한 작업물을 pull 받아와야 하는 상황이었다.
작업 중인 것들 을 커밋하지 않고 pull 받으면 커밋을 하라고 오류가 발생할 뿐더러 다른 브랜치로 이동도 할 수 없다.
그래서 이럴 때 커밋 메세지를 뭘 해야할지 고민하다가 그냥 "임시커밋" 으로 커밋을 했었는데,, 프로젝트 발표 피드백에서 이부분에 대해서 언급이 되었었다. 이와 같은 비슷한 상황에서는 임시커밋 같은 메세지로 커밋을 하기보다는 git stash 기능을 활용해보라는 조언을 받게 되어서 공부하게되었는데 마지막으로 남은 이번 최종 프로젝트 때 요긴하게 사용해볼 계획이다.
참고
https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning
'TIL' 카테고리의 다른 글
[TIL] 미들웨어(Middleware) (0) | 2024.10.21 |
---|---|
최종 프로젝트 시작 (0) | 2024.10.18 |
Vercel 배포 오류 Error: Command "yarn run build" exited with 1 (0) | 2024.10.16 |
github 잘못올라간 파일 커밋 히스토리 삭제하기 (0) | 2024.10.15 |
supabase response data type (0) | 2024.10.14 |