我的一位同事試圖從我們的GitHub回購的歷史中永久刪除文件(Diff.java
)。可以撤銷文件的永久刪除嗎?
他有很好的理由想要做到這一點,但似乎出現了問題,因爲我們似乎已經丟失了相當多的文件,這些文件已被替換爲後綴爲.REMOVED.git-id
的等效文件。例如ivy-2.2.0.jar
- >ivy-2.2.0.jar.REMOVED.git-id
。
我設法修復主開發分支,因爲我碰巧在本地有一個副本。然而,對於發佈版本的開發線和標籤來說,有許多歷史分支,現在似乎以上述方式被破壞。
據我所知,他跑了類似的過程:
$ git clone --mirror git://example.com/some-big-repo.git
$ java -jar bfg-1.12.3.jar --strip-biggest-blobs 500 some-big-repo
$ cd some-big-repo
$ git reflog expire --expire=now --all && git gc --prune=now --aggressive
$ git push
$ cd ..
$ java -jar bfg-1.12.3.jar --delete-files Diff.java some-big-repo
$ cd some-big-repo
$ git push
我猜測,這個過程是破壞性的,有沒有辦法恢復,除非我們正好有一個乾淨的鏡子前的某個地方發生這種情況。任何人都可以確認或提供一些建議?
謝謝@ roberto-tyler那裏有一些很好的建議。不幸的是,我的同事沒有創建備份。幸運的是,我發現了一個擁有大部分分支和標籤的舊鏡子,所以我能夠從那裏恢復它們。非常感謝您的幫助。 – adamretter