2014-05-14 73 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

相關問題