我可以恢复我没有在本地保存的已删除 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 --all
和git 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 分支吗?的主要内容,如果未能解决你的问题,请参考以下文章