📌 문제상황

사이드 프로젝트 진행중
Rebase를 진행하던 중에 이전 버젼으로
강제 Push를 하여 내가 작업했던 커밋이 날라가버린 경우가 생겼다.

image

9d46a0c 커밋이 작업된 커밋이고, c953c9c 커밋이 Rebase한 커밋이다.
정말 멍청하게도 git rebase --skip 명령어를 사용하면서 발생한 문제였다.

그럼 원격에는 commit이 남아있는데 어떻게 다시 원복시킬 수 있을까?


✅ 문제해결

git reflog라는 명령어가 있다.
로컬 저장소에서 HEAD의 업데이트 기록을 출력해주는 명령어이다.

git reflog

위와 같이 커멘드를 실행하게되면 모든 브랜치의 이력을 볼 수 있다.
특정 브랜치만 지정한느 것도 가능하다.

image

위와 같이 지정하고 처음에 유실했던 커밋 ID인 9d46a0c가 있다는 걸 확인했다.

그리고 현재 작업위치인 HEAD의 포인터를 변경해주는
git reset 명령어를 사용해

git reset --hard 9d46a0c

와 같이 명령어를 입력하면 유실되었던 커밋을 되찾을 수 있을 것이다.




✨ 참고 블로그