Simply put, a detached HEAD is a Git state that occurs only when you checkout a commit. See Checkout a specific Git commit. In a normal state, HEAD points to a branch name. Under the hood, it points to the latest commit of that branch also known as tip of the branch. Consider a detached state mostly for troubleshooting purposes, like finding a bug as being part of some commit.
Step 1. Get in a detached HEAD state first.
git checkout <commit-SHA1>
Step 2. If you are in a detached state by a mistake, or you’ve been messing around and do not want to save any changes, just run:
git switch -
or, checkout whatever branch you want to go back to. For instance:
git checkout main
HEAD will point to whatever branch it was pointing to before getting into a detached state.
But, if you do want to save your changes, optionally stage and commit them before creating a new branch.
git switch -c <some_new_branch>
git checkout -b <some_new_branch>
Now, it’s up to you if you want to merge this new branch or copy the commit on top of another branch.