2014-05-14 111 views
0

我从本地机器丢失了一些代码,并且我认为我有github存储库中的对象,问题是,它们是悬挂对象,我不知道如何获取它们,有没有办法获取它们?我可以从远程存储库获取所有git对象吗?

下面是这一切是如何发生的(包括我在它的愚蠢):

我有一个包含一些巨大的SQL数据的存储库(回购大约300M),因为该仓库大小制作git clone慢我去提前和deleted the huge files

git filter-branch 'git rm ...'之后我修复了依赖于已删除数据的测试,并编写了一些代码,我将这些更改和git push --force origin提交到github中。

当我试图用这个“新”存储库重新绑定时,它只是感觉到它的表面。 git filter-branch 'git rm ...'改变了第一次提交,所以一切都变成了冲突。

因为我不能重新定义我决定尝试一些不同的东西,我从我的本地机器中删除了存储库,并从旧的存储库中删除了我的备份到github中。

这就是我失去了一些工作。

我认为的对象仍然在github上,因为他们对如何删除敏感数据的文章说:

本文告诉您如何使在您的GitHub的任何分支或标签不可达的敏感数据提交库。 但是,需要注意的是,那些提交可能仍然可以通过在GitHub的缓存视图中的SHA-1哈希以及通过引用它们的任何请求请求,直接在您的存储库的任何克隆或分支中访问。您无法对存储库中的现有克隆或叉形式进行任何操作,但可以联系支持以永久移除所有存储库的缓存视图,并通过违规提交来拉取请求。

回答

1

该评论告诉你,你可能有整个项目的其他副本,由于无法识别的克隆或叉子。

如果是这样,你有运气 - 验证它真的没有被触摸过,然后把未触动的回购推到你的遥控器。

在你没有运气的情况下,我建议你遵循以下步骤:

  1. 做一个完整的深层副本(必须包含您的repoistory文件夹的.git作为备份
  2. 阅读关于data recovery和章这个post,并尝试不同的策略来恢复数据。如果事情严重失败,再次备份进行复印。

不管你随处阅读避免git gc

+0

这是一个私人回购,github中只有一个克隆(我用'git push --force'做了一个备份覆盖)。我的同事没有一个人从“修剪过的”存储库中取出或拉出,因为我们有太多的重组冲突(一切)。所以,基本上github确实删除了悬挂的对象,我没有运气? –

+0

由于你做了一个强制推送,你覆盖了github上的相应分支。它应该具有相同的状态。随意通过将您的remote-repo克隆到不同的目录来检查。除此之外,我猜GitHub会频繁进行垃圾回收以节省空间。这就是为什么我认为你的本地回购可能会有更多的运气。 – florianb

相关问题