首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在“git推送-镜像”之后恢复已删除的分支

在“git推送-镜像”之后恢复已删除的分支
EN

Stack Overflow用户
提问于 2015-07-31 18:19:32
回答 2查看 2K关注 0票数 4

我的组织在GitHub上有一个远程存储库,这是另一个组织的分叉。我在我的本地机器上做了一个克隆,并创建了一个本地分支,“test”。以下是以下命令的列表:

代码语言:javascript
复制
git fetch origin '+refs/heads/*:refs/remotes/origin/*'
git push --mirror
git push --all

接下来的一切只不过是一场噩梦。远程上没有在本地机器上签出的任何分支都会在存储库中被删除。我做过git branch -a,但这只显示了本地副本上存在的远程分支。我已经完成了git reflog show,但这只显示了当前分支HEAD上的日志。Doing git fsck显示了6个‘悬空提交’和2个‘悬空点’。在执行git push --mirror之前,分支有16个分支,其中5个是由我们的组织创建的,其余的是从原来的分支中创建的。我知道以前曾提出过类似的问题,即使不是同样的问题,但在这一点上,没有一个问题是有意义的。我对任何能阻止我被解雇的人表示最崇高的敬意和最崇高的谢意。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-31 18:30:42

有几件事要尝试。前两种方法将帮助您恢复曾经是分支提示的事物的SHA1s。但是,有一件事很难恢复,那就是缺少的分支的名称,除非之前已经知道了。

  1. 如果您最近访问了一些分支机构,您的reflog将得到它们的提示: git重放
  2. 您可以使用以下方法创建所有悬空和丢失的提交的列表: git fsck -完全 然后查看提交是否与缺少的分支匹配。

如果您知道要恢复的分支的名称,则还可以尝试:

  1. 您可以使用控制目录中的git-resurrect.sh,通过扫描reflog和其他源来尝试“复活”过去的分支。这非常慢,大型存储库可能需要很长时间。
票数 2
EN

Stack Overflow用户

发布于 2018-01-22 20:52:42

如果您可以访问所推送到的远程文件系统,则可以从MYREPO.git/info/refs中恢复已删除的分支。

里面的东西看起来像这样。

代码语言:javascript
复制
2ef208a632946dd4b5fd6f124a7fd6fc1c2ab87e        refs/heads/foo-feature
7325d39f52d6663e33f360b3bd666300ce2c52b0        refs/heads/bar-feature

对于要恢复的每个分支,请在本地回购中创建一个文件。

代码语言:javascript
复制
$ echo 2ef208a632946dd4b5fd6f124a7fd6fc1c2ab87e > .git/refs/heads/foo-feature

然后,将新恢复的分支推回服务器。

代码语言:javascript
复制
$ git push --all
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31752656

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档