我可以恢复我没有在本地保存的已删除 git 分支吗?

Posted

技术标签:

【中文标题】我可以恢复我没有在本地保存的已删除 git 分支吗?【英文标题】:Can I recover a deleted git branch which I did not save locally? 【发布时间】:2021-09-13 12:37:02 【问题描述】:

我使用命令从我的服务器中删除了一个 git 分支

git push origin :feature-my-branch

我没有在本地签出/保存分支。有什么方法可以恢复这个分支还是永远消失了?

当我这样做时

git branch --all

我看不到 feature-my-branch。当我这样做时

git reflog --no-abbrev 

我找不到 feature-my-branch 的提示。

【问题讨论】:

我猜这可能取决于远程托管服务。你知道分支引用的提交的哈希吗? 您使用什么托管服务?如果您有权访问服务器计算机,则可以登录服务器并在服务器存储库中尝试git fsck --dangling。它打印悬挂的物体。提示提交可能在其中。该提示也可能被其他 ref 引用,因此您可以尝试 git for-each-ref 列出所有 ref 并检查它们的任何头部或祖先是否是提交。 你在删除之前获取了吗? @Alex028502 我们知道他没有基于他的git branch --allgit reflog --no-abbrev 结果。 我只是在 github 上尝试过,即使我再次克隆整个 repo,哈希也不存在。我以为origin会在删除分支后保留散列,然后它会随克隆一起出现。真是太糟糕了,它可以让你删除你看不到的东西 【参考方案1】:

我设法恢复了我的分支

git fsck --dangling

在那里我发现了一个悬空提交,它是 feature-my-branch 的负责人。然后我恢复了 feature-my-branch 并推送到服务器:

git branch feature-my-branch <commit-id>
git push origin feature-my-branch

【讨论】:

以上是关于我可以恢复我没有在本地保存的已删除 git 分支吗?的主要内容,如果未能解决你的问题,请参考以下文章

Git常用的操作指令Git强制提交本地分支覆盖远程分支Git删除远程端文件Git临时保存和恢复

我可以恢复从未提交的已删除文件吗?

所有git本地分支都共享同一个工作目录吗?

Git 撤消本地分支删除

git restore 删除后未提交的已删除文件

Git使用实例分析