Git撤消本地分支删除

我刚刚删除了一些实验性的改变,我需要用git branch -D branchName删除错误的分支。

我如何恢复分支机构?

您可以使用git reflog来查找分支上次提交的SHA1。 从这一点上,你可以使用重新创build一个分支

 git branch branchName <sha1> 

编辑:正如@ seagullJS所说, branch -D命令告诉你sha1,所以如果你还没有closuresterminal,那真的很容易。 例如,这将删除并立即恢复名为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 

如果您知道分支的最后一个SHA1,则可以尝试

 git branch branchName <SHA1> 

你可以使用git reflogfindSHA1,在这里的解决scheme中描述。

如果您还没有推删除,您可以简单地做:

 $ git checkout deletedBranchName 

如果你刚刚删除了分支,你会在terminal上看到类似这样的东西:

 Deleted branch branch_name(was e562d13) 

要恢复分支,请使用:

 git checkout -b <branch_name> <sha> 

例如

 git checkout -b branch_name e562d13 

首先:备份整个目录,包括.git目录。

第二:你可以使用git fsck --lost-found来获取丢失提交的ID。

第三:rebase或合并到失落的提交。

第四:在使用-D或者–force和git之前总是三思而行:)

你也可以阅读这个关于如何从这种错误中恢复的良好讨论 。

编辑:顺便说一句,不要运行git gc (或允许它自己运行 – 即不运行git fetch或类似的东西),否则你可能会失去你的提交永远。

谢谢,这工作。

git分支new_branch_name sha1

git checkout new_branch_name

//可以在我的旧分支中看到我的旧签入文件