퇴근을 얼마 남겨두지 않은 어느 오후,
예전에 작업하던 변경분을 다시 가져오려고 IntelliJ에서 "Unstash Changes"를 열었다.
일단 그 전에! 이미 merge되어 필요 없어진 오래된 stash들을 drop한다는 걸...
정신이 가출했는지, 모르고 clear를 해버렸다.
날려버린 stash들 중에는
꽤 긴 시간 작업했던 코드들이 담겨 있던 터라, 복구가 안된다면 시간 소모가 클 것 같았다.
찾아 보니 다행히 뭔가 방법이 있긴 있다.
https://stackoverflow.com/questions/89332/how-to-recover-a-dropped-stash-in-git
요약하면,
1. 아래 명령어로 stash commit의 hash값 목록을 가져온다.
git fsck --no-reflog | awk '/dangling commit/ {print $3}' | xargs -L 1 git --no-pager show -s --format="%ci %H" | sort
2. 아래와 같이 최근 dangling commit들이 날짜 순으로 정렬되어 나온다.
※ dangling commit: 어느 브랜치나 태그로부터도 참조되고 있지 않은 커밋(stash commit도 포함).
3. 날짜를 보고, 내가 추적하고 있는 stash가 무엇인지 대략적으로 추측해본다.
4. 찾은 hash값으로 다음 명령어를 입력한다.
git stash apply {stash의\_hash값}
변경된 코드를 보고 내가 찾던 stash가 맞는지 보면 된다.
만약 아니라면 다시 rollback하고, 위에서 찾은 다른 hash값으로 똑같이 시도해보면 되겠다.
댓글