A 'bad rebase' happens when the rebase process causes conflicts, lost commits, or an unwanted history, making the branch state incorrect or confusing.
Click to reveal answer
beginner
Which Git command helps you see the previous state before the rebase started?
The command git reflog shows a log of all recent HEAD changes, including before the rebase, helping you find the commit to recover.
Click to reveal answer
intermediate
How do you undo a bad rebase using Git?
Use git reflog to find the commit before the rebase, then run git reset --hard <commit-hash> to restore your branch to that state.
Click to reveal answer
beginner
What does git rebase --abort do?
It stops the current rebase process and returns your branch to the state before the rebase started, useful if you realize the rebase is going wrong.
Click to reveal answer
beginner
Why is it important to backup or check your branch before rebasing?
Because rebasing rewrites history, mistakes can cause lost commits or conflicts. Checking or backing up helps you recover easily if something goes wrong.
Click to reveal answer
Which command shows the history of HEAD changes to help recover from a bad rebase?
Agit status
Bgit log
Cgit branch
Dgit reflog
✗ Incorrect
git reflog tracks all recent HEAD movements, including before and after rebases, making it the best tool to find previous states.
What does git rebase --abort do during a rebase?
ACompletes the rebase ignoring conflicts
BDeletes the current branch
CStops the rebase and restores the branch to its original state
DCreates a new branch
✗ Incorrect
This command cancels the rebase and returns your branch to how it was before starting the rebase.
If you lost commits after a bad rebase, what is the safest way to recover them?
ADelete the branch and create a new one
BUse <code>git reset --hard</code> with a commit from <code>git reflog</code>
CRun <code>git push --force</code> immediately
DRun <code>git merge</code> without options
✗ Incorrect
Using git reflog to find the last good commit and resetting hard to it recovers lost commits safely.
Why should you avoid rebasing shared branches without coordination?
ABecause rebasing rewrites history and can confuse others working on the branch
BBecause rebasing deletes the branch
CBecause rebasing is slower than merging
DBecause rebasing disables commits
✗ Incorrect
Rebasing changes commit history, which can cause problems if others have based work on the original commits.
What is the first step to recover from a bad rebase?
ACheck <code>git reflog</code> to find the commit before the rebase
BRun <code>git push</code>
CDelete the repository
DRun <code>git merge</code>
✗ Incorrect
Finding the commit before the rebase using git reflog is essential to know where to reset your branch.
Explain how to safely undo a bad rebase using Git commands.
Think about how to find the old state and restore it.
You got /3 concepts.
Describe why rebasing can cause problems and how to avoid losing work.
Consider what rebasing changes and how to prepare.
You got /4 concepts.
Practice
(1/5)
1. What is the safest way to stop a rebase process if you realize it is going wrong?
easy
A. Use git rebase --abort to cancel the rebase
B. Use git reset --hard HEAD to cancel the rebase
C. Use git commit --amend to fix the rebase
D. Use git push --force to undo the rebase
Solution
Step 1: Understand the rebase abort command
The command git rebase --abort safely stops and cancels the ongoing rebase process, restoring the branch to its original state before the rebase started.
Step 2: Compare with other commands
Other commands like git reset --hard HEAD or git commit --amend do not cancel a rebase safely. git push --force is for pushing changes, not aborting rebase.
Final Answer:
Use git rebase --abort to cancel the rebase -> Option A
Quick Check:
Cancel rebase safely = git rebase --abort [OK]
Hint: Abort rebase with git rebase --abort to safely cancel [OK]
Common Mistakes:
Using git reset --hard HEAD which may lose changes
Trying to amend commits during rebase to fix errors
Forcing push without fixing rebase issues
2. Which of the following commands correctly shows the history of recent HEAD positions to help recover from a bad rebase?
easy
A. git reflog
B. git branch -a
C. git status
D. git log --oneline
Solution
Step 1: Identify the command to view HEAD history
git reflog shows a log of where HEAD and branches have pointed recently, including before and after rebases.
Step 2: Understand why other commands don't help here
git log --oneline shows commit history but not HEAD movements. git status shows current state. git branch -a lists branches.
Final Answer:
git reflog -> Option A
Quick Check:
View HEAD history = git reflog [OK]
Hint: Use git reflog to find commits before rebase [OK]
Common Mistakes:
Using git log which doesn't show HEAD moves
Confusing git status with reflog
Looking at branches instead of commit history
3. After a bad rebase, you find the commit hash abc1234 from git reflog. What does the command git reset --hard abc1234 do?
medium
A. Creates a new branch at commit abc1234
B. Moves the current branch to commit abc1234 and discards all changes after it
C. Starts a new rebase from commit abc1234
D. Shows the differences between HEAD and abc1234
Solution
Step 1: Understand git reset --hard with a commit
The command git reset --hard abc1234 moves the current branch pointer to the commit abc1234 and resets the working directory and index to match that commit, discarding any changes after it.
Step 2: Clarify what the other options do not do
This command does not create a new branch, start a rebase, or show differences. It forcibly resets the branch state.
Final Answer:
Moves branch to abc1234 and discards later changes -> Option B
Quick Check:
Reset hard to commit = move branch and discard changes [OK]
Hint: Reset hard to commit to undo bad rebase changes [OK]
Common Mistakes:
Thinking reset creates a new branch
Confusing reset with diff or rebase commands
Using reset without knowing it discards changes
4. You started a rebase but got conflicts and want to cancel it. You run git reset --hard HEAD instead of git rebase --abort. What is the likely result?
medium
A. The rebase is safely canceled and branch restored
B. The rebase continues but changes are lost
C. The working directory resets but rebase metadata remains, causing issues
D. Git shows an error and stops
Solution
Step 1: Understand difference between reset and rebase abort
git reset --hard HEAD resets files but does not clear rebase state files, so the rebase process is still active.
Step 2: Consequence of not aborting rebase properly
This causes Git to think rebase is ongoing, leading to confusion and possible errors until git rebase --abort is run.
Final Answer:
Working directory resets but rebase metadata remains, causing issues -> Option C
Quick Check:
Reset hard ≠ abort rebase; rebase metadata stays [OK]
Hint: Always use git rebase --abort to cancel rebase, not reset [OK]
Common Mistakes:
Using reset hard to cancel rebase
Assuming reset clears rebase state
Ignoring rebase metadata files causing errors
5. You performed a bad rebase and want to recover your branch to the state before the rebase started. Which sequence of commands correctly recovers your branch?
hard
A. git checkout master -> git merge --abort
B. git reset --hard HEAD~1 -> git rebase --abort
C. git rebase --continue -> git reset --soft HEAD~1
D. git reflog -> find commit before rebase -> git reset --hard <commit>
Solution
Step 1: Use git reflog to find the commit before the bad rebase
git reflog lists recent HEAD positions, so you can identify the commit hash before the rebase started.
Step 2: Reset branch to that commit to undo the bad rebase
Using git reset --hard <commit> moves the branch pointer back and resets files to that safe commit, effectively undoing the bad rebase.
Final Answer:
git reflog -> find commit before rebase -> git reset --hard <commit> -> Option D
Quick Check:
Recover bad rebase = reflog + reset hard [OK]
Hint: Find pre-rebase commit with reflog, then reset hard to it [OK]
Common Mistakes:
Trying to abort after rebase finished
Using reset soft which keeps changes
Confusing merge abort with rebase abort
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.