
git reflog는 Git의 참조 로그(reference log)를 확인하는 명령어입니다. 이 명령어를 사용하면 작업 트리나 HEAD의 이동과 같은 Git의 참조에 대한 모든 변경 내역을 볼 수 있습니다. 주로 실수로 삭제한 커밋이나 브랜치를 복구하는 등의 작업에 사용됩니다.
git reflog
# git reflog 명령은 Git의 참조 로그(reference log)를 확인하는 명령어입니다.
# Git에서 이루어진 모든 참조(브랜치, HEAD 등)에 대한 변경 이력을 확인할 수 있습니다.
# 실수로 이전 커밋이나 브랜치를 삭제했거나 변경한 경우, 이를 복구하는 데 유용합니다.
# 각 로그 항목은 이동한 위치, 해당 위치에서 수행한 작업, 작업 시간 등의 정보를 포함합니다.
# 이를 통해 버그를 추적하거나 이전 상태로 복구하는 등의 작업을 수행할 수 있습니다.
# 주의: reflog는 로컬에서만 작동하며, 리모트 저장소에는 적용되지 않습니다.


git reset --hard 명령어를 사용하여 HEAD~2까지 되돌렸습니다. git log --oneline 명령어를 사용하여 확인하면 HEAD~2 이후의 커밋들이 git log를 통해 보이지 않습니다. 그러나 실제로 삭제되는 것은 작업 트리와 인덱스의 변경 내용뿐이고, 이전 커밋들은 Git 데이터베이스에 여전히 존재합니다.

이때 git reflog 명령어를 사용하면 삭제된 커밋의 정보를 확인하거나 복구할 수 있습니다.
git reflog
# 지워진 커밋의 커밋 해시를 확인
git reset --hard e02b502
# 복구할 f3의 커밋해시 입력
git log --oneline
# 커밋 복구가 됬는지 다시 확인

삭제된 커밋을 복구하는 방법을 알아보겠습니다. 먼저, git reflog 명령어를 사용하여 삭제된 커밋의 해시를 확인합니다. 그 다음, git reset --hard [복구할 커밋해시] 명령어를 통해 커밋을 복구합니다. git log 명령어로 확인해보면, 삭제되었던 f3이 복구되었고, 그 사이에 있었던 f2도 함께 복구된 것을 확인할 수 있습니다.