Stash
- Modified이면서 Tracked 상태인 파일과 Staging Area에 있는파일을 보관해두는 장소이다. 아직 끝나지 않은 수정사항을 스택에 잠시 저장했다가 나중에 다시 적용할 수 있다. - 브랜치가 달라져도 ㅇ.ㅇ
- 언제 쓸까 ?
본인이 담당하는 작업 중 다른 요청이 들어와서 브랜치를 변경해야할 일이 있을 때, 완료되지 않은 일을 커밋 하는 것은 부담스럽다. 이 때, Stash로 임시 저장했다가 나중에 반영하는 것이다.
말이 어렵다.
스토리
열심히 A에 대해서 변경 중이었다.
A기능은 B 기능에 영향을 미친다.
아직 A' 기능 변경이 완료되지 않은 상태에서, B 기능에 대한 변경사항이 발생했다.
B부터 해야한다.
A'는 잠시 keep해야한다.
A'를 commit할 수는 없다.
이 때, A'를 stash하여 저장하고,
잘 동작하는 A로 B 기능에 대한 개발을 진행한다.
그리하여 B기능 개발 완료 후 stash되어 있는 A'를 다시 불러와서 사용한다.!
이게 사용 스토리가 되겠다. 가끔 쓰는데 편함 ㅇ.ㅇ
변경사항을 stash를 통해 stack에 임시 저장한다.
이 때, 워킹 디렉토리의 변경사항, staged 파일은 모두 stash 스택으로 이동하며, 워킹 디렉토리는 깨끗해진다.
(unmodified 상태의 파일만 남음, 또는 untracked)
git stash
git stash save "stash명" //stash명으로 stash이름이 설정됨
-> stack에 쌓인 stash리스트는 아래 명령어로 확인가능.
git stash list
stash에 쌓인 파일을 브랜치에 반영하기 - apply
- 기본적으로 최신 stash를 적용하며, stash의 이름을 지정하면 특정 stash가 반영된다.
이 때, 반드시 깨끗한 워킹 디렉토리나, 같은(stash한) 브랜치에 적용해야하는 것은 아니다.
다른 브랜치에서도 적용(apply)할 수 있으며, stash한 파일을 변경한 경우에도 적용이 가능하다.
충돌이 있으면 알려줌..
git stash apply
※ staged 파일은 modified상태로 적용된다.
git stash apply --index // staged 상태까지 적용
※ apply명령은 stash를 적용할 뿐!
git stash drop // stash 제거
git stash pop // stash 적용 후 스택에서 바로 제거
git stash clear // stash 다 날림.
git stash --keep-index // staging area에 있는 파일은 stash하지 않는다.
git stash --include-untracked // 추적중이지 않은 파일도 stash
git stash -u // 추적중이지 않은 파일도 stash
git stash --patch // 저장할 것과 저장하지 않을 것을 지정할 수 있음.
Stash를 적용한 브랜치 만들기
git stash brach <브랜치명> // stash할 당시 커밋을 checkout한 후, 새로운 브랜치를 만들고, 여기에 적용함.
성공하면 stash 삭제함.
안전한 코딩생활 하세욥~!
참고
Git- SCM : https://git-scm.com/book/ko/v2/Git-%EB%8F%84%EA%B5%AC-Stashing%EA%B3%BC-Cleaning
'Git' 카테고리의 다른 글
[Git] Git 저장소 생성 (0) | 2023.05.23 |
---|---|
[GIT] Git 초기 설정 - 도움말, 사용자 정보설정 (0) | 2023.05.23 |
[GIT] GIT이란? Git의 동작. (1) | 2023.05.10 |
[GIT] Git 공부를 시작하다. (0) | 2023.05.10 |
댓글