I just deleted the wrong branch with some experimental changes I need with git branch -D branchName
.
How do I recover the branch?
This worked for me:
git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139
If you know the last SHA1 of the branch, you can try
git branch branchName <SHA1>
You can find the SHA1 using git reflog
, described in the solution here.
If you haven't push the deletion yet, you can simply do :
$ git checkout deletedBranchName
You can use git reflog to find the SHA1 of the last commit of the branch. From that point, you can recreate a branch using
git branch branchName <sha1>
Edit: As @seagullJS says, the branch -D
command tells you the sha1, so if you haven't closed the terminal yet it becomes real easy. For example this deletes and then immediately restores a branch named master2
:
user@MY-PC /C/MyRepo (master)
$ git branch -D master2
Deleted branch master2 (was 130d7ba). <-- This is the SHA1 we need to restore it!
user@MY-PC /C/MyRepo (master)
$ git branch master2 130d7ba
First: back up your entire directory, including the .git directory.
Second: You can use git fsck --lost-found
to obtain the ID of the lost commits.
Third: rebase or merge onto the lost commit.
Fourth: Always think twice before using -D or --force with git :)
You could also read this good discussion of how to recover from this kind of error.
EDIT: By the way, don't run git gc
(or allow it to run by itself - i.e. don't run git fetch
or anything similar) or you may lose your commits for ever.
Thanks, this worked.
git branch new_branch_name
sha1
git checkout new_branch_name
//can see my old checked in files in my old branch