Bird
Raised Fist0
Gitdevops~20 mins

Detached HEAD state in Git - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
Detached HEAD Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
🧠 Conceptual
intermediate
2:00remaining
What happens in Git when you enter a detached HEAD state?

In Git, what does it mean when you are in a detached HEAD state?

AYou have checked out a specific commit, not a branch, so commits won't update any branch.
BGit has lost track of your repository and you cannot commit.
CYou are on a branch and can commit changes normally.
DYou are in a merge conflict state and must resolve conflicts before committing.
Attempts:
2 left
💡 Hint

Think about what HEAD points to when detached.

💻 Command Output
intermediate
2:00remaining
Output of git status in detached HEAD state

What is the typical output of git status when you have checked out a commit directly (detached HEAD)?

Git
git checkout 1a2b3c4d

git status
A
HEAD detached at 1a2b3c4d
nothing to commit, working tree clean
Bfatal: You are not currently on a branch.
C
You are currently rebasing branch 'master' on 'origin/master'.
All conflicts fixed but you are still merging.
D
On branch master
Your branch is up to date with 'origin/master'.
nothing to commit, working tree clean
Attempts:
2 left
💡 Hint

Detached HEAD shows the commit hash in the status.

🔀 Workflow
advanced
2:30remaining
How to save work done in detached HEAD state

You made commits while in a detached HEAD state. How do you save these commits to a branch so they are not lost?

ARun <code>git reset --hard HEAD~1</code> to save commits.
BRun <code>git checkout master</code> to automatically save commits to master.
CRun <code>git branch new-branch</code> to create a branch at the current commit.
DRun <code>git merge detached</code> to merge detached commits.
Attempts:
2 left
💡 Hint

Think about how to create a branch from the current commit.

Troubleshoot
advanced
2:00remaining
Why does git push fail in detached HEAD state?

You are in a detached HEAD state and try to push your commits with git push origin HEAD. The push fails. Why?

ABecause your remote repository is down.
BBecause HEAD is not a branch, Git cannot push it without a branch name.
CBecause you have uncommitted changes.
DBecause you need to run <code>git fetch</code> first.
Attempts:
2 left
💡 Hint

Consider what HEAD points to in detached state and how push works.

Best Practice
expert
3:00remaining
Best practice to avoid losing commits in detached HEAD

What is the best practice to avoid losing commits made in a detached HEAD state?

AUse <code>git stash</code> to save commits made in detached HEAD state.
BReset HEAD to master after committing in detached HEAD state.
CNever commit in detached HEAD state; only commit on branches.
DAlways create a new branch immediately after making commits in detached HEAD state.
Attempts:
2 left
💡 Hint

Think about how to keep commits safe and accessible.

Practice

(1/5)
1. What does it mean when Git is in a detached HEAD state?
easy
A. You are merging two branches together.
B. You are on the latest commit of the main branch.
C. You are viewing a specific commit, not a branch.
D. You have uncommitted changes in your working directory.

Solution

  1. Step 1: Understand HEAD in Git

    HEAD usually points to the latest commit on a branch, representing your current working state.
  2. Step 2: Meaning of detached HEAD

    When HEAD points directly to a commit instead of a branch, you are in detached HEAD state, meaning you are not on any branch.
  3. Final Answer:

    You are viewing a specific commit, not a branch. -> Option C
  4. Quick Check:

    Detached HEAD = viewing commit, no branch [OK]
Hint: Detached HEAD means no branch, just a commit [OK]
Common Mistakes:
  • Confusing detached HEAD with uncommitted changes
  • Thinking detached HEAD means merging branches
  • Assuming detached HEAD is always on main branch
2. Which Git command puts you into a detached HEAD state?
easy
A. git checkout main
B. git branch new-feature
C. git merge feature-branch
D. git checkout

Solution

  1. Step 1: Understand git checkout usage

    Checking out a branch moves HEAD to that branch's latest commit, staying attached.
  2. Step 2: Checkout a commit hash

    Checking out a specific commit hash moves HEAD directly to that commit, causing detached HEAD state.
  3. Final Answer:

    git checkout <commit-hash> -> Option D
  4. Quick Check:

    Checkout commit hash = detached HEAD [OK]
Hint: Checkout commit hash, not branch, to detach HEAD [OK]
Common Mistakes:
  • Using branch name instead of commit hash
  • Confusing branch creation with checkout
  • Thinking merge causes detached HEAD
3. What will be the output of the following commands?
git checkout 1a2b3c4
git status
Assuming 1a2b3c4 is a valid commit hash.
medium
A. HEAD detached at 1a2b3c4 nothing to commit, working tree clean
B. On branch main Your branch is up to date.
C. error: pathspec '1a2b3c4' did not match any file(s) known to git
D. You are currently rebasing branch 'main'

Solution

  1. Step 1: Checkout commit hash

    Running git checkout 1a2b3c4 moves HEAD to that commit, entering detached HEAD state.
  2. Step 2: Check git status output

    In detached HEAD, git status shows 'HEAD detached at <commit>' and clean working tree if no changes.
  3. Final Answer:

    HEAD detached at 1a2b3c4 nothing to commit, working tree clean -> Option A
  4. Quick Check:

    Detached HEAD status shows commit and clean tree [OK]
Hint: Detached HEAD status shows commit hash and clean tree [OK]
Common Mistakes:
  • Expecting branch name in status
  • Thinking checkout commit hash causes error
  • Confusing rebase message with detached HEAD
4. You are in detached HEAD state and made some changes. Which command will save your changes safely on a new branch?
medium
A. git commit -m 'save changes'
B. git checkout -b new-branch
C. git merge main
D. git reset --hard

Solution

  1. Step 1: Understand detached HEAD changes

    Changes made in detached HEAD are not on any branch and can be lost if you switch commits.
  2. Step 2: Create a new branch to save changes

    Using git checkout -b new-branch creates a branch at current commit and switches to it, preserving changes.
  3. Final Answer:

    git checkout -b new-branch -> Option B
  4. Quick Check:

    Create branch from detached HEAD to save changes [OK]
Hint: Create new branch from detached HEAD to keep changes [OK]
Common Mistakes:
  • Committing without a branch loses changes on checkout
  • Merging without branch context does not save changes
  • Resetting discards changes
5. You checked out a commit hash and made changes in detached HEAD. Later, you want to keep those changes and continue working on a branch named feature. What is the correct sequence of commands?
hard
A. git checkout -b feature git add . git commit -m 'work'
B. git commit -m 'work' git branch feature git checkout feature
C. git add . git commit -m 'work' git checkout feature
D. git checkout feature git merge HEAD

Solution

  1. Step 1: Create and switch to new branch

    Use git checkout -b feature to create a branch at current detached HEAD and switch to it.
  2. Step 2: Stage and commit changes

    Run git add . and git commit -m 'work' to save your changes on the new branch.
  3. Final Answer:

    git checkout -b feature git add . git commit -m 'work' -> Option A
  4. Quick Check:

    Create branch first, then commit changes [OK]
Hint: Create branch first, then add and commit changes [OK]
Common Mistakes:
  • Committing before creating branch loses changes
  • Switching to branch before committing loses detached changes
  • Merging detached HEAD into branch is incorrect