我刚刚删除了错误的分支,并使用git branch -D branchName
进行了一些实验性更改。
如何恢复分支?
答案 0 :(得分:622)
您可以使用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
答案 1 :(得分:47)
答案 2 :(得分:27)
如果您尚未推送删除,只需执行以下操作:
$ git checkout deletedBranchName
答案 3 :(得分:19)
如果您刚刚删除了分支,您将在终端中看到类似的内容:
Deleted branch branch_name(was e562d13)
- 其中e562d13是唯一的ID(例如&#34; SHA&#34;或&#34;哈希&#34;),您可以使用此功能恢复已删除的分支。
要恢复分支,请使用:
git checkout -b <branch_name> <sha>
例如:
git checkout -b branch_name e562d13
答案 4 :(得分:7)
执行以下步骤:
1:输入:
git reflog show
这将显示所有“提交”历史记录,您需要选择具有要返回的最后一个提交的sha-1
2:使用您选择的 Sha-1 ID 创建分支名称,例如:8c87714
git branch your-branch-name 8c87714
答案 5 :(得分:3)
首先:备份整个目录,包括.git目录。
第二:您可以使用git fsck --lost-found
获取丢失提交的ID。
第三:重新绑定或合并到丢失的提交。
第四:在使用-D或--force与git之前总是三思而后行。)
您还可以read this good discussion了解如何从此类错误中恢复过来。
编辑:顺便说一下,不要运行git gc
(或允许它自己运行 - 即不运行git fetch
或类似的东西)或者你可能永远失去你的提交。
答案 6 :(得分:3)
谢谢,这很有用。
git branch new_branch_name
sha1
git checkout new_branch_name
//可以在我的旧分支中看到旧的签入文件
答案 7 :(得分:1)
如果您通过 Source Tree
删除了一个分支,您可以通过转到 View -> Show Command History
轻松找到已删除分支的 SHA1。
它应该有下一个格式:
Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...
然后按照原始答案进行操作。
git branch branchName <sha1>
答案 8 :(得分:0)
这对我有用:
git fsck --full --no-reflogs --unreachable --lost-found
git show d6e883ff45be514397dcb641c5a914f40b938c86
git branch helpme 15e521b0f716269718bb4e4edc81442a6c11c139