How do I recover a deleted branch in Git?
Deleting a branch in Git does not immediately destroy the commits — it just removes the label pointing to them. As long as those commits are still in Git's reflog, you can get the branch back.
If you are looking for how to delete a branch intentionally, see how to delete a branch in Git.
Find the lost commit with reflog
git reflog
You will see output like this:
e3a1f92 HEAD@{0}: checkout: moving from feature/payments to main
e3a1f92 HEAD@{1}: commit: Fix currency rounding error
b7c204d HEAD@{2}: commit: Add Stripe webhook handler
4f9a831 HEAD@{3}: commit: Scaffold payments module
a1b2c3d HEAD@{4}: checkout: moving from main to feature/payments
The last commit on the deleted branch (feature/payments) was e3a1f92 — the HEAD position just before you switched back to main.
Recreate the branch from the commit hash
Use git checkout to create a new branch at that commit:
git checkout -b feature/payments e3a1f92
Or using the newer syntax:
git switch -c feature/payments e3a1f92
This creates a new branch starting at that exact commit, restoring your work exactly as it was. You can verify it with git branch to see the recreated branch in your local list.
Reflog has a time limit
By default, Git keeps reflog entries for 90 days for reachable commits and 30 days for commits that are no longer reachable from any branch or tag. After that, git gc can prune them.
If the branch was on the remote
If the branch was pushed before it was deleted, check whether it still exists there:
git fetch origin
git branch -r
If origin/feature/payments still appears, recreate it locally:
git checkout -b feature/payments origin/feature/payments
For more on managing branches, see our guide on branching and merging.
Ready to streamline your Git workflow? DeployHQ deploys your code automatically whenever you push to your repository.