460

我刚刚删除了错误的分支,并进行了一些我需要的实验性更改git branch -D branchName

如何恢复分支?

4

10 回答 10

854

您可以使用git reflog查找分支的最后一次提交的 SHA1。从那时起,您可以使用重新创建分支

git branch branchName <sha1>

编辑:正如@seagullJS 所说,该branch -D命令会告诉你sha1,所以如果你还没有关闭终端,它变得非常容易。例如,这会删除然后立即恢复名为 的分支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
于 2010-10-26T16:57:06.663 回答
75

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

git branch branchName <SHA1>

您可以使用git reflog解决方案 --defect link-- 中描述的 找到 SHA1。

于 2010-10-26T16:55:04.770 回答
42

If you haven't push the deletion yet, you can simply do :

$ git checkout deletedBranchName
于 2014-01-14T16:07:04.107 回答
39

如果您刚刚删除了分支,您将在终端中看到如下内容:

Deleted branch branch_name(was e562d13)
  • 其中 e562d13 是唯一 ID(也称为“SHA”或“哈希”),您可以使用它恢复已删除的分支。

要恢复分支,请使用:

git checkout -b <branch_name> <sha>

例如

git checkout -b branch_name e562d13 
于 2016-08-19T11:45:22.727 回答
21

按着这些次序:

1:输入:

git reflog show 

这将显示所有提交历史记录,您需要选择具有要返回的最后一次提交的 sha-1

2:使用您选择的Sha-1 ID创建一个分支名称,例如:8c87714

git branch your-branch-name 8c87714
于 2020-03-11T18:36:18.630 回答
9

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

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

第三:变基或合并到丢失的提交上。

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

您还可以阅读这篇关于如何从此类错误中恢复的精彩讨论。

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

于 2010-10-26T16:57:44.247 回答
5

谢谢,这行得通。

git 分支 new_branch_namesha1

git checkout new_branch_name

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

于 2017-02-07T16:00:17.017 回答
2

这对我有用:

git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139
于 2020-04-15T07:54:55.090 回答
2

如果您通过 删除了一个分支Source Tree,您可以通过转到 轻松找到已删除分支的 SHA1 View -> Show Command History

它应该具有以下格式:

Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...

然后按照原来的答案。

git branch branchName <sha1>

于 2021-02-25T15:04:24.410 回答
0

如果您使用 Jetbrains IDE(Goland、phpstorm 等)的 GUI 删除了一个分支

git windows(left-down corner of IDE)-> console tab-> 现在您可以看到 IDE 执行命令的日志,并从该日志中找到分支名称和 SHA1

于 2021-12-09T16:27:42.123 回答