Day61 - [Git]Stash

2021. 5. 13. 03:23

이번에는 Git 의 Stash 에 대해서 알아 봅시다

 

Stash

Stash 는 , 현재 내가 작성하는 파일을 커밋하지 않고, 임시 저장소에 저장하는 방법 입니다.

 

complict 에러를 피할 수 있는 유용한 방법 입니다.

 

※ git stash -> 하던 작업 임시저장소에 저장하기

※ git stash list -> stash 목록 보기

※ git stash aplly <stash 이름> -> stash에 있는 파일 가져오기

※ git stash drop <stash 이름> -> stash의 (이름)stash 제거하기

※ git stash clear -> stash 전부 지우기

 

직접 한번 해봅시다.

 

먼저, 최초 커밋을 해서 로컬 저장소와 원격 저장소를 똑같이 만들어 줍니다.

이 상태에서 저는 A.txt 를 수정을 합니다. ( 커밋은 하지 않은 상태 )

그리고 원격저장소에 내가 아닌 누군가가 A.txt 를 수정합니다.

이 상태에서, 내 로컬 저장소의 status 를 확인해 보면 아래와 같습니다.

이 상태에서, complict 에러를 해소하기 위해서 pull or fetch 를 이용해서 내 로컬저장소를 최신화 해주어야 되죠?

이 과정을 수행할 때, 저는 작성하던 A.txt 를 저장하기 위해서 불 필요한 commit 을 해주어야 합니다.

 

그런데, 이 상태에서 stash 를 사용하면 내가 작성하던 A.txt 는 마지막 커밋 상태로 돌아갑니다.

그리고 stash list 를 확인해보면 아래와 같이 작성하던 파일이 stash@{0} 이라는 이름으로 저장이 됩니다.

그러면, 제 로컬 저장소는 마지막 커밋으로 돌아가게 되고, 이 때 pull 을 사용해서 로컬저장소를 원격저장소와 같게 만듭니다.

이렇게 최신화를 한 후에, stash 에 있던 내가 작업하던 파일을 가져옵니다.

이제 수정을 완료하고 커밋을 한 다음 푸시를 하면 됩니다.

 

그러면, 필요없는 stash 는 clear or drop 으로 제거 합니다.

 

이렇게 stash 를 이용하면, 불 필요한 커밋을 하지 않기 때문에, log 가 남지 않습니다.