Interview Q&A / Git & GitHub

IntermediateQuick answer1 min readUpdated 3 Oct 2026

What is git reflog, and how does it help you recover lost commits?

SHORT ANSWER

The reflog is a local log of every position HEAD and your branches have been at. If you reset or delete something by mistake, you find the old commit hash in the reflog and point a branch back to it.

Explain it simply

git log shows the history of the project. The reflog shows the history of what you did: every checkout, commit, reset and rebase. It is like your browser history, which can bring back a page after you closed it by mistake.

After a bad git reset --hard, the commits are no longer on the branch but still exist in the repository for a while, and the reflog keeps entries for at least 30 days by default. git reflog lists them with names like HEAD@{2}. Create a branch at the right one, or reset to it. Reflogs are local only; they are never pushed.

Example

bash
git reset --hard HEAD~3        # oops
git reflog
# 8a1b2c3 HEAD@{0}: reset: moving to HEAD~3
# f4d5e6a HEAD@{1}: commit: Add checkout page
git reset --hard f4d5e6a       # or: git branch rescue f4d5e6a

What to say in the interview

"The reflog records where HEAD and branch tips have been, locally. After a mistaken reset, rebase or deleted branch I run git reflog, find the earlier hash, and recover with git reset or git branch. It is local, and entries eventually expire."

Common mistakes

  • Expecting the reflog to recover uncommitted changes; it only tracks commits.

#git#reflog#recovery

Related questions

Practise more Git & GitHub questions

Test your recall with short answers, then return to the detailed explanations when you need context.

Open Git & GitHub quick answers →

Get new questions like this by email

One short email when something new and useful lands. No spam, unsubscribe in one tap.

By subscribing you agree to the Privacy Policy.