[英]Git restore branch that was deleted both locally and on the server
我正在嘗試恢復大約一周前從遠程服務器中刪除的分支。 從那時起,我徹底銷毀了該項目的本地存儲庫,因此也沒有該分支的本地版本。 我嘗試了“git fsck”,但在那里沒有看到與我的分支相關的任何內容。
通過git reflog
(分支上的最后一次提交)查找 sha 並在命令行提示符下執行git checkout -b <branch> <sha>
。
一種可能性是某處沒有執行git fetch --prune
,它仍然會跟蹤最后一個已知的提示。
但是如果失敗了,由於“大約一周前”在服務器上刪除了分支,未引用對象的出廠默認到期時間尚未過去,因此 auto-gc 不應該將其清除。 ssh 到那個 repo,做
git fsck --lost-found --connectivity-only
和git show
或者例如git log --online --graph --decorate master..$id
在lost-found/commits
目錄中的 id 以查看它們中的任何一個看起來不錯。 任何這樣做,您都可以為他們制作一個新的分支提示,如果提交仍在回購中,其歷史記錄也在那里。
如果你不想在實時服務器上操作,你可以只 rsync 或 tar 或任何 repo 本身,整個事情,到任何你想要的地方,然后在閑暇時進行探索。 如果有人在復制過程中推送,您可能必須刪除任何雜散的find -name \\*.lock
文件,或者如果有任何硬連線路徑配置在 repo 本身之外,則使用配置,但這是不尋常的。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.