
git reflog실수로 reset --hard로 파일을 지운 경우 위 명령어를 이용해 복원할 수 있다.
전체적인 과정은 다음과 같다.
git branch backup 명령어로 브랜치를 만든다. (브랜치 이름이 꼭 backup일 필요는 없다. 원하는 브랜치 이름으로 해도된다.)
위 커밋 로그에서 e26d1b0 커밋 전까지 reset --hard로 삭제한다.
git reset --hard HEAD~4
or
git reset --hard e26d1b0

e26d1b0 이전 커밋까지 삭제 된 것을 확인할 수 있다.
reset --hard로 삭제한 커밋을 복원하려면 어떻게 해야할까?
git reflog 명령을 사용하면 된다.
git reflog로 이전 커밋 내역 출력git reflog
위 명령어를 치면 아래와 같이 이전 커밋 목록이 모두 출력된다.

복원하고 싶은 커밋으로 checkout 한다.
우리는 reset --hard를 하기 바로 직전 커밋인 59f97b6를 복원하고 싶다.
따라서 아래와 같이 입력하자.
git checkout 59f97b6
59f97b6 커밋으로 체크아웃 한 상태이다. (detached-HEAD 상태)
Note: switching to '59f97b6'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
새로운 브랜치를 생성한다.
git branch backup // 브랜치 이름이 꼭 backup일 필요는 없다.
backup 브랜치로 checkout한다.
git checkout backup

위와 같이 이전 커밋 내역들이 복원된 backup 브랜치가 생성된 걸 확인할 수 있다.
이제는 reset --hard로 이전 커밋을 삭제했다고 해서 좌절할 필요 없다. git reflog를 이용해 다시 복원할 수 있다. :)