Git

[Git] Git- Stash(임시저장)

디벨로펄 2023. 5. 25.
반응형

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 - Stashing과 Cleaning

작업하던 저장소가 완전 지저분해져서 Git에게 진짜로 강제로 정리하도록 해야 하는 경우가 생길 수 있다. 예를 들어 Git 버전관리 데이터가 포함된 디렉토리를 복사해왔거나 서브모듈 디렉토리

git-scm.com

 

반응형

'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

댓글