컴퓨터/git

git (5) - 임시로 이력을 저장하자 (stash)

달서비 2024. 8. 5. 10:42

git을 이용하여 기존 작업을 하면서 여러 개의 브랜치를 왔다 갔다 하다 보면 파일이 overwritten 되었다는 오류가 발생합니다.

error: Your local changes to the following files would be overwritten by checkout

이런 경우에 commit을 하여 이력을 생성하거나 stash를 이용하여 임시로 이력을 저장해야 합니다. 임시로 파일 이력을 저장한다면 해당 오류를 해결할 수 있습니다.

 

git logo

git stash

git stash

git stash는 파일의 변경 이력을 임시로 저장하는 명령어입니다. 개발하던중 다른 브랜치에 있는 버그를 고쳐야 하는 경우와 같이 작업이 여러 개가 필요한 경우 git stash를 이용하여 현재 변경한 모든 코드를 일시적으로 저장할 수 있습니다. 그리고 작업이 완료되면 임시 저장한 내용을 다시 불러와 작업을 이어서 할 수 있습니다.

 

git stash 명령어 사용 방법

저장/삭제

#stash 저장
git stash save "message"

#메세지 없이 stash 저장
git stash

#stash 삭제
# 최근 stash 이력 삭제
git stash drop

#특정 stash 이력 삭제
git stash drop stash@{2}

#전체 삭제
git stash clear

stash 명령어 같은 경우 저장을 제외하고 인덱스를 사용하여 특정 목록을 지정할 수 있습니다. 인덱스의 번호 순서는 스택과 같이 최신 값일수록 낮습니다.

 

조회

#stash 조회
#최근 stash 변경 목록 조회
git stash show

#최근 stash 변경 목록 조회 (상세내용)
git stash show -p 

#특정 stash 변경 목록 조회
git stash show stash@{2}

 

불러오기

#가져오기
git stash pop
git stash pop stash@{2}

#불러오기
git stash apply
git stash apply stash@{2}

#staging area까지 불러오기
git stash pop --index
git stash apply --index

stash를 가져오는 방법은 크게 pop과 apply로 나누어집니다. stash한 데이터의 처리에 따른 차이가 발생합니다.

  • pop : stash한 이력을 가져옵니다. stash한 데이터는 사라집니다.
  • apply : stash한 이력을 불러옵니다. stash한 데이터는 유지됩니다.

한가지 특이점은 데이터 호출 시에는 git add를 한 이력들은 불러오지 않습니다. 그런 경우에는 --index 옵션을 이용하여 불러야 합니다. (최근에 이걸로 데이터를 날렸습니다...)

 

Reference

https://mine-it-record.tistory.com/651

 

[GIT] 깃(Git) 스태시(stash) 사용하기 - 변경된 내용 임시 저장하기

git stash git stash는 무엇일까? git stash는 파일의 변경 내용을 일시적으로 기록해두는 영역이라고 생각하면 된다. 실제로 현업에서 git을 사용하다 보면 생각보다 많이 사용하게 되는 게 git stash라고

mine-it-record.tistory.com