우리는 이전 커밋으로 돌아가는 커맨드를 git reset이라고 배웠었다. 그럼 만일 이렇게 돌아간다면 그 이후 커밋들은 어떻게 되는걸까? 의문이 남을 것이다.
git reset을 해서 이전의 커밋으로 돌아가서 git history 커맨드를 입력해보면 단 하나의 커밋 밖에 나오지 않는 것을 볼 수가 있을 것이다. 그러면 이후의 커밋들은 다 사라져버린걸까나?
결론은 아니다! reset을 해도 그 이후의 커밋들이 삭제되는 건 아니다. 하지만 우리가 reset을 하고나서 다시 있었던 곳에 위치한 그 커밋으로 이동하고 싶다고 하면 어떻게 해야할까?
그래서 우리는 git reflog
커맨드를 이용해서 그 이후에 했던 커밋들을 찾을 것이다. reflog는 reference log의 줄임말이다.
reflog를 하게 되면, 헤드가 이때까지 가리켜왔던 커밋들을 기록한 정보가 다 뜨게 된다.
여기서 각 한 줄은 헤드가 가리키던 커밋이 바뀌었을 때 기록된거라고 보면 된다. 그리고 두번째줄을 보면 reset: moving to 9856이라고 써있는데 이 문구는 이 동작을 통해서 헤드가 가리키게 된 커밋을 말한다. 그리고 그 커밋의 아이디는 9856988이다. 그래서 그 전으로 돌아가려면 git reset —hard 9856 라고 입력하면 된다. 근데 9856이라고 안쓰고 HEAD@{1}이라고 써도 된다. 같은 기능을 하기 때문이다.