Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

ㅤ스폰지허의ㅤ🐶🐾 블로그

git stash해둔 거 실수로 drop했을 때!!!! 복구하기 본문

개발일지

git stash해둔 거 실수로 drop했을 때!!!! 복구하기

spongeheo 2022. 10. 13. 00:14

소스트리랑 터미널이랑 같이 사용하다보니까 헷갈렸다.(변명임)

 

브랜치를 변경하고 싶은데 푸시하기 전이라면! 커밋해둔 작업물들을 날리고 싶지 않다면 git stash를 사용해야한다.

임시저장소에 저장해뒀다가 다시 꺼내오는 개념!

 

내 파일을 날린 건 아니고 동료 파일을... 날려먹은.. 설상 가상으로 옛날에 수정했던 파일이라 뭘 고쳤는지조차 기억이 안난다고 하셨다. 일단 박박 사죄하고 ..

stash 한번 해봤다고 알려주려다가 stash를 취소 그니까 pop을 해야하는데 drop을 해버렸다.

소스트리에서 pop인줄 알고 누르라고 한건데.. 사실 drop이었던 것임.. 임시저장 삭제 조심하쇼 다들.

 

터미널에서 한 것도 아니라 commit의 hash 값을 알 수 없었다.

그래서 구글링해본 결과 : https://circlezeroblog.tistory.com/2

- 삭제된 stash list 가져오기

git fsck --unreachable | grep commit | cut -d ' ' -f3 | xargs git log --merges --no-walk

이 명령어를 치니까 ! 내가 스태시 삭제한 로그가 나오면서 hash값을 찾을 수 있었다 .. ㅜㅜ 하지만 아직 기뻐하긴 일렀다.

 

- 삭제된 stash 복구시키기

git update-ref refs/stash < Commit ID > -m "다시 저장할 Stash 이름"

 

그 다음엔 이 명령어를 치라고 했다.

그러면 깃의 삭제했던 파일이 refs/stash에 들어간다고.. 근데 stash 파일이 복구가 안됐다. 

 

-복구된 stash가 보이지 않을 때

git update-ref refs/stash < Commit ID > --create-reflog -m "다시 저장할 Stash 이름"

업데이트가 안됐다면 이것도 해보라고 했다.

근데 안됐다. 다시 맨 처음 명령어를 쳤는데 찾을 수 없었다. 어디론가 이동했는데.. 왜 반영이 안돼!!!

 

손이 발이 되게 빌고 다시 시작한 구글링

 

https://hashcode.co.kr/questions/4650/git%EC%97%90%EC%84%9C-stash-%EC%8B%A4%EC%88%98%EB%A1%9C-%EC%A7%80%EC%9B%A0%EC%9D%84-%EB%95%8C-%EB%B3%B5%EA%B5%AC%ED%95%98%EB%8A%94-%EB%B0%A9%EB%B2%95

이 글에서 하란대로 hash값을 찾고

git show hash값

을 했더니 수정했던 파일이 보였다!!!!!!

 

git stash apply hash값

마지막으로 이걸 해주니까 삭제됐던 파일이 돌아왔다...ㅜㅜㅜㅜ진짜 다행...

 

 

git 쓰는 게 무서운 시기는 지났다고 생각했는데 아직도 무섭다면..? 

얼른 자유자재로 쓰고 싶어요..

 

 

마무리로 명령어 정리

git stash - 이미 자신의 작업 내역이 있고 변경 내역을 불러와 계속 작업을 이어 나갈 경우

git stash save <저장할 이름> - 임시 저장소에 파일들 저장 그리고 브랜치 변경하면 된다.

git stash list - 임시 저장소에 저장된 리스트

git stash apply - 임시 저장소에 보관했던 파일들 복원하기

git stash drop - 임시 저장소에 있는 파일들 삭제하기

git stash pop - 임시 저장소에 있는 파일들 로컬 프로젝트에 다시 불러오기. 그리고 stash에 저장됐던 해당 stash를 삭제한다.( apply 후 drop이라고 생각하면 됨)

 

 

-- TODO: rebase, revert도 공부하자..

https://uxicode.tistory.com/entry/git-reset-rebase-stash

 

 

참고 블로그

https://gmlwjd9405.github.io/2018/05/18/git-stash.html

Comments