0. Introduction

  • 이번 단원에서는 reset으로 사라진 커밋을 복구할 수 있는 reflog 명령어를 알아본다.

git reflog

프로젝트가 위치한 commit이 바뀔 때마다 기록되는 내역을 보여주고, 이를 사용하여 reset 하기 이전 시점으로 프로젝트를 복구할 수 있다. 즉, 내가 사용한 Git 작업을 기준으로 과거내역을 살펴보고 원하는 시점으로 프로젝트를 되돌릴 수 있다.

  • 현재 기준 15번째 전 commit으로 reset 해본 후, git reflog를 입력해보면 여태 입력했던 명령어들과 각 명령어에 해당되는 commit 번호를 확인할 수 있다.
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
$ git reset --hard HEAD~15
$ git reflog
ed807a6 (HEAD -> main) HEAD@{0}: reset: moving to HEAD
ed807a6 (HEAD -> main) HEAD@{1}: reset: moving to HEAD~15
c99c341 HEAD@{2}: reset: moving to HEAD~15
3d75f7f (origin/main) HEAD@{3}: merge remote-branch: Fast-forward
1b2bbcb (tag: v1.0.5) HEAD@{4}: checkout: moving from remote-branch to main
3d75f7f (origin/main) HEAD@{5}: checkout: moving from main to remote-branch
1b2bbcb (tag: v1.0.5) HEAD@{6}: checkout: moving from remote-branch to main
3d75f7f (origin/main) HEAD@{7}: checkout: moving from main to remote-branch
1b2bbcb (tag: v1.0.5) HEAD@{8}: pull origin main: Fast-forward
...
  • 그러면 제일 최근 단계로 돌아가기 위해서는 commit 해쉬번호 를 복사한 후, git reset --hard <복사한 commit 해쉬번호> 를 입력한다.
    • 가장 최근 상태의 커밋 번호가 3d75f7f 이므로 git reset --hard 3d75f7f을 입력하면 원 상태로 돌아온다.

Reference