Git....무조건 복구가 가능하다

1️⃣ stash를 분명히 했다.

사건의 전말은 이랬다.

feature/payment에서 작업을 진행하고 있었다.
디자인팀에서 지난 번의 매거진 관련 수정사항이 급히 필요하다고 했다.
커밋을 하여 head를 최신화하는 것보단
잠시 저장소에 작업 내용을 저장하는 stash를 사용하기로 결정했다.


2️⃣ 어디갔지 근데......?!

리모트 main 브랜치에서 로컬 main으로 git pull을 하여
코드를 최신화 시켰다.
feature/magazine에서 최신화 된 main 브랜치와 rebase를 진행했다.

그리고 빠르게 수정작업을 진행했고, 원격 main으로 PR 및 merge를 했다.

feature/payment로 다시 돌아와 git stash를 하여 중간에 끊긴 작업을 이어가려고 했다. 그런데 없어졌다 작업 내용들이!!!!!!!!!

  • rebase가 잘못됐나
  • stash를 하긴 한걸까(5%정도의 의심)
  • 그냥 새롭게 다시 작업할까

별의별 고민을 다 했다.
그래도 git checkout --force를 하진 않았다는 1000%의 확신이 있었다. 이것이 정말 중요했다.
커밋은 안했고, checkout --force를 하지 않은 것도 확실하니
git stash는 분명히 했다는 추론을 했다.


3️⃣ git reflog는 사랑입니다.

아래의 명령어를 터미널에 입력했다.

git reflog --all

무조건 복구시켜야 겠다는 생각으로
위의 모든 커밋을 하나하나 들어가 봤다.

git checkout "커밋 id"

그러다 특정 커밋에서 삭제되어 보이지 않던 models.py를 찾게됐다!

git reflog --all 을 통해 나온 로그들 중
복원을 가능하게 했던 커밋은 다음과 같다.

e225e3fe refs/stash@{1}: WIP on payment: e7f04038 .vscode 디렉토리 삭제


4️⃣ 참고자료

https://stackoverflow.com/questions/12147042/lost-git-stash-changes/22439647

좋은 웹페이지 즐겨찾기