커밋 메시지를 수정하고 싶어서 rebase를 하려고 했는데 커밋 안 된 변경사항이 있어서 커밋이나 stash를 한 다음 reabse 할 수 있다는 안내 메시지가 나와서 stash를 했다. 그리고 rebase도 무사히 완료해서 '이제 stash로 임시 저장(?)한 내용은 없애도 되겠군'이라고 생각하고 stash drop을 했는데, 커밋 안 한 코드가 이전 상태로 돌아가버렸다 😨😨😨
다행히 stash를 드롭한 게 원인인 것 같아서 git stash apply + "drop할 때 나왔던 stash의 해시값" 을 입력했더니 코드가 최신 상태로 복구됐다 😭😊😊
➕
예전에도 이런 문제가 생긴 적이 있었는데 그땐 원인을 못 찾아서 그냥 코드를 다시 입력했다. 😭 지금 생각해 보니 그때도 rebase를 하려고 git stash를 했는데 stash를 다시 가져오지 않아서(git stash apply 명령어로 스택에 있는 stash를 다시 가져와야 되는 줄 몰랐다. rebase를 마치면 stash가 알아서 다시 돌아오는 줄 알았다) stash에 저장된 변경사항이 적용되지 않은 예전 코드만 보였던 것 같다.
stash drop을 하면 변경 내역이 사라진다. '나 이거 변경했다'는 기록만 사라지는 게 아니라... 변경한 코드 자체가 사라진다. 😨 주의하기.
어떤 이유로 stash를 만들었다면 git stash apply 명령어로 stash를 다시 가져와야 stash 안에 들어 있는 변경 사항이 현재 코드에 적용된다.