當git-filter-branch
完成時,它檢出新的分支頭。這會將您的工作目錄更新爲乾淨的狀態。您希望從歷史中刪除的文件已被刪除。預先備份是解決方案。
如果您忘記備份它,仍然可以將其還原! Git需要很長時間才能完成,原來的提交仍然存在。在git-filter-branch
之後,將會有一個名爲original/refs/heads/master
(如果您過濾了master)的分支,其中包含原始提交。你可以從那裏恢復文件。
一般來說,您可以使用git reflog
恢復過濾器和底座。這是每次登錄HEAD
時的日誌(即,您簽出或重新綁定或合併或過濾或...)。例如,在做GitHub的過濾器後,例如,git reflog
是...
abaabaf (HEAD -> master, origin/master, origin/HEAD) [email protected]{0}: filter-branch: rewrite
8ef0c30 (refs/original/refs/remotes/origin/master, refs/original/refs/heads/master) [email protected]{1}: clone:
我可以使用8ef0c30
或[email protected]{1}
(即的HEAD
以前的位置)或original/refs/remotes/origin/master
或original/refs/heads/master
要回,事情是前過濾器運行。
進行備份是解決方案。 – Schwern
Git主要是一個Unix程序。在Unix中,您不會將每個令人擔憂的情況都集成到您的可執行文件中。你(希望)小型單獨程序合作實現你的目標。 – PSkocik