我刚才错误地删除了一些实验性更改的分支,使用了git branch -D 分支名称
, 我该如何恢复这个分支呢?
我刚才错误地删除了一些实验性更改的分支,使用了git branch -D 分支名称
, 我该如何恢复这个分支呢?
您可以使用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
git branch branchName origin/branchName
。 - Florian Castellane如果你知道分支的最后一个SHA1,可以尝试:
git branch branchName <SHA1>
你可以使用git reflog
查找SHA1,该方法在解决方案--defect link--中有描述。
如果您刚刚删除了分支,在终端中您将看到类似于以下内容:
Deleted branch branch_name(was e562d13)
- e562d13是一个唯一的ID(也称为“SHA”或“哈希”),使用它可以恢复已删除的分支。
要恢复分支,请使用以下命令:
git checkout -b <branch_name> <sha>
例如:
git checkout -b branch_name e562d13
请按照以下步骤操作:
1:输入:
git reflog show
这将显示所有提交历史记录,您需要选择具有您想要恢复的最后提交的sha-1。
2:使用您选择的 Sha-1 ID 创建分支名称,例如:8c87714。
git branch your-branch-name 8c87714
如果您还没有推送删除操作,您可以简单地执行以下操作:
$ git checkout deletedBranchName
首先:备份整个目录,包括.git目录。
其次:您可以使用git fsck --lost-found
命令获取丢失提交的ID。
第三步:将提交变基或合并到丢失的提交上。
第四步:在使用git的-D或--force选项之前,请三思而后行 :)
编辑:顺便提一下,不要运行git gc
(或允许它自己运行 - 即不要运行git fetch
或任何类似的命令),否则您可能会永久丢失提交。
git fsck --lost-found | awk '/commit/{print $3}' | xargs gitk &
- MelebiusSource Tree
删除了一个分支,您可以通过进入View -> Show Command History
轻松找到已删除分支的SHA1。Deleting branch ...
...
Deleted branch %NAME% (was %SHA1%)
...
然后就按照原来的答案操作即可。
git branch 分支名 <sha1>
首先,不要惊慌。你来到了正确的地方。 继续加油,我们都会犯错!这就是我们学习的方式! 我祝愿你健康、幸福和成功!
哦,关于答案!我想你已经找到了!
如果还没有!这里是答案。
use git reflog
git checkout branch branch_name commitsha
再次祝您编程愉快!
谢谢,这个方法可行。
git branch 新分支名
sha1
git checkout 新分支名
//可以在我的旧分支中看到我之前提交的文件。