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
Recall & Review
beginner
What is the Detached HEAD state in Git?
It means you are not on any branch but on a specific commit. Changes made here won't update any branch until you create one or move a branch pointer.
Click to reveal answer
beginner
How do you enter Detached HEAD state?
By checking out a commit directly using its hash or a tag instead of a branch name.
Click to reveal answer
intermediate
What happens if you make commits in Detached HEAD state and then switch branches without saving?
Those commits can be lost because no branch points to them unless you create a new branch or tag to save them.
Click to reveal answer
beginner
How can you save work done in Detached HEAD state?
Create a new branch from the current commit using 'git switch -c ' or 'git checkout -b '.
Click to reveal answer
intermediate
Why might someone want to use Detached HEAD state?
To explore or test a past commit without affecting branches, or to build and test code at a specific point in history.
Click to reveal answer
What does Detached HEAD state mean in Git?
AYou are on the latest commit of a branch
BYou have uncommitted changes
CYou are on a specific commit, not a branch
DYou are merging two branches
✗ Incorrect
Detached HEAD means you checked out a commit directly, not a branch.
How do you enter Detached HEAD state?
Agit merge <branch>
Bgit checkout <branch-name>
Cgit commit -m 'message'
Dgit checkout <commit-hash>
✗ Incorrect
Checking out a commit hash puts you in Detached HEAD state.
What happens to commits made in Detached HEAD if you switch branches without saving?
AThey are lost unless saved to a branch or tag
BThey become untracked files
CThey merge with the branch you switch to
DThey are automatically saved to the current branch
✗ Incorrect
Commits in Detached HEAD are lost if not saved to a branch or tag.
Which command saves your work from Detached HEAD state to a new branch?
Agit switch -c <branch-name>
Bgit branch -d <branch-name>
Cgit reset --hard
Dgit merge <branch-name>
✗ Incorrect
git switch -c creates a new branch from current commit.
Why use Detached HEAD state?
ATo permanently delete commits
BTo explore or test a past commit safely
CTo push changes to remote
DTo create a new branch automatically
✗ Incorrect
Detached HEAD lets you explore or test commits without changing branches.
Explain what Detached HEAD state is and how you can safely save work done in this state.
Think about checking out commits and branch creation.
You got /3 concepts.
Describe a scenario where Detached HEAD state is useful and what risks it carries.
Consider testing old commits and saving changes.
You got /3 concepts.
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
Step 1: Understand HEAD in Git
HEAD usually points to the latest commit on a branch, representing your current working state.
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.
Final Answer:
You are viewing a specific commit, not a branch. -> Option C
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
Step 1: Understand git checkout usage
Checking out a branch moves HEAD to that branch's latest commit, staying attached.
Step 2: Checkout a commit hash
Checking out a specific commit hash moves HEAD directly to that commit, causing detached HEAD state.
Final Answer:
git checkout <commit-hash> -> Option D
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
Step 1: Checkout commit hash
Running git checkout 1a2b3c4 moves HEAD to that commit, entering detached HEAD state.
Step 2: Check git status output
In detached HEAD, git status shows 'HEAD detached at <commit>' and clean working tree if no changes.
Final Answer:
HEAD detached at 1a2b3c4
nothing to commit, working tree clean -> Option A
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
Step 1: Understand detached HEAD changes
Changes made in detached HEAD are not on any branch and can be lost if you switch commits.
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.
Final Answer:
git checkout -b new-branch -> Option B
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?