Git undo local branch delete

Ste*_*all 348 git branch git-branch

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

我如何恢复分支?

bob*_*vil 663

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

git branch branchName <sha1>
Run Code Online (Sandbox Code Playgroud)

编辑:正如@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
Run Code Online (Sandbox Code Playgroud)

  • Git告诉你删除分支时SHA1是什么,所以如果你只删除它,它可能只是命令行中的几行. (69认同)
  • 这家伙是真正的MVP (4认同)
  • 谢谢,这节省了我几个小时的工作!仅供参考使用git reflog获取<sha1> (2认同)
  • 如果服务器上存在此分支,或者,您可以使用`gitbranchbranchNameorigin/branchName` (2认同)

Che*_*tan 49

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

git branch branchName <SHA1>
Run Code Online (Sandbox Code Playgroud)

您可以git reflog此处找到解决方案中描述的SHA1 .


ami*_*aud 30

如果您尚未推送删除,您只需执行以下操作:

$ git checkout deletedBranchName
Run Code Online (Sandbox Code Playgroud)


Der*_*ick 22

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

Deleted branch branch_name(was e562d13)
Run Code Online (Sandbox Code Playgroud)
  • 其中e562d13是唯一ID(也称为"SHA"或"哈希"),您可以使用此功能恢复已删除的分支.

要恢复分支,请使用:

git checkout -b <branch_name> <sha>
Run Code Online (Sandbox Code Playgroud)

例如:

git checkout -b branch_name e562d13 
Run Code Online (Sandbox Code Playgroud)


gre*_*ese 12

按着这些次序:

1:输入:

git reflog show 
Run Code Online (Sandbox Code Playgroud)

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

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

git branch your-branch-name 8c87714
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢。这对我有用。我两个月的工作就这样白费了。该解决方案有助于恢复这些文件。 (7认同)

Ser*_*buz 8

如果您使用IntelliJ IDEAEvent Log您会看到类似的内容:

在此输入图像描述

并且可以简单地恢复您的分支


Cam*_*ner 7

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

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

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

第四:在将 -D 或 --force 与 git 一起使用之前,请务必三思:)

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

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


EvZ*_*EvZ 7

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

它应该具有以下格式:

Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...
Run Code Online (Sandbox Code Playgroud)

然后按照原来的答案就可以了。

git branch branchName <sha1>


Mur*_*eoz 6

首先,不要惊慌。你是在正确的地方。加油吧,我们都会犯错!这就是我们学习的方式!祝您健康、幸福、成功!

哦,求答案!我想你已经明白了!

如果不!这就是答案。

use git reflog
git checkout branch branch_name commitsha
Run Code Online (Sandbox Code Playgroud)

为了更清楚地说明,在第二个命令中,branch_name 是您要为分支指定的名称。commitsha 是您要查看的 sha 编号。您可以从 git reflog 命令获得该信息。

再次祝您编码愉快!


Raj*_*wal 5

谢谢,这有效。

git 分支 new_branch_name sha1

git checkout new_branch_name

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

  • 这是[不是论坛](https://meta.stackexchange.com/q/92107/217657),请对有用的答案进行投票,而不是重新发布它们。 (2认同)