Bird
Raised Fist0
Gitdevops~20 mins

Reflog for finding lost commits in Git - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Reflog Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
💻 Command Output
intermediate
1:30remaining
What does the command git reflog show?
You run git reflog in your repository. What output do you expect to see?
Git
git reflog
AA list of recent HEAD positions with commit hashes and messages.
BA list of all tags in the repository.
CThe current status of files in the working directory.
DA list of all branches and their remote tracking status.
Attempts:
2 left
💡 Hint
Think about what 'reflog' tracks in Git.
💻 Command Output
intermediate
1:30remaining
What is the output of git reflog show HEAD@{2}?
Assuming your reflog has at least 3 entries, what does this command display?
Git
git reflog show HEAD@{2}
AThe commit details of the third most recent HEAD position.
BThe current commit hash and message.
CAn error saying the reflog entry does not exist.
DA list of all commits in the repository.
Attempts:
2 left
💡 Hint
HEAD@{n} refers to the nth previous position of HEAD.
🔀 Workflow
advanced
2:30remaining
How to recover a lost commit using reflog?
You accidentally reset your branch and lost a commit. Which sequence of commands correctly recovers the lost commit using reflog?
A1,3,2,4
B1,2,3,4
C2,1,3,4
D1,4,3,2
Attempts:
2 left
💡 Hint
First find the commit, then create a branch from it.
❓ Troubleshoot
advanced
2:00remaining
Why does git reflog not show a lost commit?
You lost a commit but git reflog does not list it. What is the most likely reason?
AThe commit is hidden because the branch was deleted.
BThe commit was never created in the repository.
CThe reflog only shows remote branch history, not local commits.
DThe reflog expired or was cleaned and no longer tracks that commit.
Attempts:
2 left
💡 Hint
Reflog entries expire after some time or cleanup.
✅ Best Practice
expert
2:00remaining
What is the best practice to avoid losing commits that reflog might not recover?
Which option is the best practice to ensure commits are not lost even if reflog expires or is cleaned?
AUse <code>git reset --hard</code> frequently to clean history.
BRely solely on reflog to find lost commits when needed.
CRegularly push commits to a remote repository to back them up.
DDelete branches immediately after merging to keep history clean.
Attempts:
2 left
💡 Hint
Think about how to keep commits safe beyond local history.

Practice

(1/5)
1. What is the primary purpose of git reflog?
easy
A. To list all remote branches
B. To permanently delete commits from the repository
C. To record where HEAD and branches have pointed recently
D. To merge two branches automatically

Solution

  1. Step 1: Understand what reflog tracks

    Reflog records the history of where HEAD and branch references have pointed, including commits that might be lost after resets or rebases.
  2. Step 2: Compare options with reflog purpose

    Only To record where HEAD and branches have pointed recently correctly describes reflog's role. Options B, C, and D describe unrelated git functions.
  3. Final Answer:

    To record where HEAD and branches have pointed recently -> Option C
  4. Quick Check:

    Reflog tracks HEAD history = A [OK]
Hint: Reflog shows recent HEAD moves, like a safety net [OK]
Common Mistakes:
  • Confusing reflog with git log
  • Thinking reflog deletes commits
  • Assuming reflog lists remote branches
2. Which command correctly shows the reflog entries?
easy
A. git reflog
B. git reflog list
C. git reflog -a
D. git reflog --show

Solution

  1. Step 1: Recall the basic reflog command

    The simplest and correct command to show reflog entries is git reflog.
  2. Step 2: Evaluate other options

    git reflog --show is invalid; git reflog list and git reflog -a are invalid commands.
  3. Final Answer:

    git reflog -> Option A
  4. Quick Check:

    Basic reflog command = git reflog [OK]
Hint: Use just 'git reflog' to see recent HEAD moves [OK]
Common Mistakes:
  • Adding unnecessary subcommands like 'list'
  • Using invalid flags like '-a'
  • Confusing reflog with git log
3. After running git reset --hard HEAD~1, you realize you lost a commit. Which command helps you find the lost commit's hash?
medium
A. git reflog
B. git status
C. git branch
D. git log --oneline

Solution

  1. Step 1: Understand what happens after reset

    git reset --hard HEAD~1 moves HEAD back one commit, making the latest commit unreachable but still in reflog.
  2. Step 2: Identify command to find lost commit

    git reflog shows recent HEAD positions including the lost commit's hash. Other commands won't show unreachable commits.
  3. Final Answer:

    git reflog -> Option A
  4. Quick Check:

    Reflog shows lost commits after reset = C [OK]
Hint: Use reflog to find commits lost by reset [OK]
Common Mistakes:
  • Using git status which shows working tree only
  • Using git branch which lists branches, not commits
  • Using git log which hides unreachable commits
4. You ran git reset --hard HEAD~2 but want to restore the latest commit. Which command correctly resets to the lost commit using reflog?
medium
A. git reset --hard HEAD@{2}
B. git reset --hard origin/main
C. git reset --hard HEAD~1
D. git reset --hard HEAD@{1}

Solution

  1. Step 1: Understand reflog indexing

    After resetting HEAD back two commits, reflog entries show HEAD@{0} as current, HEAD@{1} as previous position (the lost commit), and HEAD@{2} as older.
  2. Step 2: Choose correct reflog entry to restore

    To restore the latest lost commit, reset to HEAD@{1} which points to it. HEAD@{2} is older, HEAD~1 is relative to current HEAD, and origin/main may differ.
  3. Final Answer:

    git reset --hard HEAD@{1} -> Option D
  4. Quick Check:

    Use HEAD@{1} to restore last HEAD position [OK]
Hint: Reset to HEAD@{1} to undo last reset [OK]
Common Mistakes:
  • Using HEAD@{2} which is older than needed
  • Using HEAD~1 which is relative to current HEAD
  • Resetting to origin/main which may differ
5. You accidentally deleted a branch with important commits. How can you recover the lost commits using reflog?
hard
A. Run git branch -d to restore the branch
B. Find the commit hash in git reflog and create a new branch at that hash
C. Use git reset --hard origin/branch-name to recover commits
D. Re-clone the repository to get the branch back

Solution

  1. Step 1: Locate lost commits in reflog

    Deleted branch commits remain in reflog as recent HEAD positions or branch references before deletion.
  2. Step 2: Create a new branch at the lost commit hash

    After finding the commit hash in reflog, use git branch new-branch-name <commit-hash> to restore the branch with lost commits.
  3. Final Answer:

    Find the commit hash in git reflog and create a new branch at that hash -> Option B
  4. Quick Check:

    Reflog + new branch recovers deleted commits [OK]
Hint: Use reflog hash to recreate deleted branch [OK]
Common Mistakes:
  • Trying to delete branch again to restore it
  • Resetting to origin which may not have deleted commits
  • Re-cloning loses local lost commits
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard