author avatar
    資深軟體經理
最後由張偉 2026-8-8進行了更新

摘要
當面臨「Git 儲存庫檔案遺失」或「磁碟損壞」的情況時,保持冷靜是第一步。本指南將帶您逐步檢查檔案系統,並透過專業資料恢復工具進行診斷與修復。我們整理了安全的手動修復流程、磁區掃描方法與驗證步驟,協助您在不進一步破壞資料的前提下,重建受損的版本控制環境,找回重要程式碼。



Git 檔案遺失
執行 git status 時突然跳出難以理解的錯誤,同事的 commit 無故消失;原本存放歷史紀錄的 .git 資料夾竟只剩下空檔案或 0 位元組檔案。這種情況對開發者而言宛如噩夢,尤其是在突如其來的斷電、系統崩潰或藍白當機後,磁碟狀態不一致,導致 Git 儲存庫檔案遺失與磁碟損壞。
此時請立即停止所有寫入操作。任何對受損磁碟的寫入行為,都可能覆蓋原本儲存庫資料所在的區塊。如果使用的是外接磁碟,建議直接拔除;若是系統磁碟,則應立即關機,以避免進一步破壞資料。
Git 錯誤
請留意以下跡象。這些情況通常代表磁碟層級損壞,而不是單純的 Git 操作失誤:
- 執行 git loggit status 時失敗,並出現「fatal: bad object HEAD」或「error: object file .git/objects/… is empty」等錯誤。
- 開機失敗後,git fsck 回報「 error: object file is empty 」、「 broken link 」或「 missing blob 」。
- Windows 檔案總管顯示 .git 資料夾,但卡住無回應,或 objects/ 內出現 0 位元組檔案。
- 在 Windows 執行 chkdsk,或在 Linux 執行 fsck 時,發現包含該儲存庫的磁碟區有檔案系統錯誤。
本指南會協助您區分 Git 邏輯問題與實際的磁碟實體損壞。您將學會評估嚴重程度、嘗試低風險的救援指令;若檔案系統本身已損壞,也能了解如何恢復原始檔案並重建 Git。

如何判斷是 Git 損壞、磁碟損壞,還是兩者皆有?

在進行任何變更前,您需要明確診斷。若只是單純的 Git ref 問題,使用重量級恢復工具只會浪費時間;若在即將故障的磁碟上執行高強度 Git 維護指令,則可能永久摧毀資料。
請參考下表,對照您的症狀、最可能的原因與正確的下一步動作:
症狀可能原因下一步動作

git fsck 只回報「dangling object」或「missing tree」;磁碟檢查通過。

單純的 Git 儲存庫損壞(ref/物件不匹配)。

從 clone 或遠端恢復;切勿執行 git gc

git fsck 顯示「object file is empty」或「broken link」,且檔案系統檢查(chkdsk / fsck)回報 .git 資料夾有錯誤。

影響 Git 物件的磁碟損壞

停止使用該磁碟;使用唯讀恢復工具進行掃描。

.git 資料夾遺失、無法存取,或磁碟代號不再顯示。

分割區遺失、格式化或嚴重的檔案系統損壞

使用分割區層級的恢復軟體。

實體跡象:磁碟發出喀噠聲、讀取緩慢、頻繁的 I/O 錯誤。

硬體故障(壞軌、磁頭損壞)。

立即關閉電源;考慮尋求專業的資料恢復服務。

重建儲存庫前,務必嘗試的安全救援選項

如果 .git 資料夾仍可存取,而且只有少數物件損壞,請先嘗試這些低風險步驟,再考慮使用磁碟恢復軟體。這些手動方法假設儲存裝置實體正常,而且檔案系統損壞只影響特定檔案。按以下順序操作,通常可在不使用進階恢復工具的情況下恢復儲存庫。
git fsck full
優點:
  • 無需第三方軟體
  • 若只遺失少數物件,速度較快
  • 完全離線運作。

缺點:

  • 需要命令列知識
  • 若磁碟有實體壞軌,則完全失效
  • 若移除錯誤的物件,有意外刪除資料的風險。

步驟 1 – 進行逐位元組備份 (byte-for-byte backup)
請使用不依賴檔案系統的工具(例如 Linux 上的 dd磁碟映像工具 ),建立受損儲存庫的完整副本。這樣可保留目前狀態,避免後續步驟讓情況惡化。
步驟 2 – 執行診斷性 fsck
git fsck --full
此指令會在不變更任何資料的情況下,識別遺失或空白的物件。請記錄輸出結果,以便之後判斷必須從乾淨的遠端儲存庫替換哪些物件。
步驟 3 – 刪除空白/損壞的鬆散物件並執行 fetch
空白的物件檔案(0 位元組)可以安全移除,Git 會重新下載這些物件。請進入 .git/objects/,刪除大小為 0 位元組的檔案,或錯誤訊息「object file is empty」中提到的檔案。
然後執行:
git fetch origin
Git 會從遠端拉取遺失的物件。如果沒有遠端儲存庫,則需改用其他方式。
步驟 4 – 從另一個 clone 複製完整的物件
如果您有本機 clone 或同事的副本,請手動將特定物件檔案從對方的 .git/objects/ 複製到受損的儲存庫中,並維持相同目錄結構。複製後,檢查錯誤是否減少:
git fsck --full
切勿在受損的儲存庫上執行 git gcgit repack(在 TortoiseGit 中,這對應「 Cleanup 」與「 Repack database 」)。這些指令會重新組織物件,也可能丟棄仍可恢復的資料。
如果磁碟有實體壞軌,或檔案系統無法讀取 .git 目錄,這些步驟就無效。此時必須使用專業的恢復工具。

何時該使用 Renee Undeleter 恢復遺失的 Git 儲存庫檔案?

如果 git fsck 找不到 objects 資料夾,磁碟顯示為 RAW 或已格式化,或 Windows 提示「必須先格式化磁碟才能使用」,表示問題出在檔案系統或分割區層級,不是 Git 指令能修復。這時就適合使用 Renee Undeleter
Windows「必須先格式化磁碟才能使用」錯誤訊息
熱點推薦 立即開始免費資料恢復

簡單易用 簡單幾步即可從不同的儲存裝置救回檔案。

多種掃描方案 內建多種掃描方案,可針對不同的檔案丟失原因進行掃描救援!

多檔案類型救援 可從不同的儲存裝置中救回多種類型的檔案。

救援前可預覽 可邊掃描邊預覽已掃描到的檔案,確認檔案內容及質量後,可立即停止掃描進行救援!

適用於:Windows 10 / 8.1 / 8 / 7 / Vista / XP (32bit/64bit) & Mac OS 10.6 或以上

簡單易用 簡單幾步即可救回檔案。

多檔案類型救援 可從不同的儲存裝置中救回多種格式的檔案。

多種掃描方案 可針對不同的檔案丟失原因進行救援!

免費試用免費試用免費試用已有1000名用戶下載并使用Renee Undeleter成功救回丟失的檔案資訊!
- 恢復 400 多種檔案格式 :透過特徵碼掃描,即使檔案系統無法讀取也能救援。
- 分割區恢復 :可從已格式化、無法存取或受損,但仍顯示在「磁碟管理」中的分割區恢復資料。
- 整顆磁碟恢復 :可重建遺失的分割區資訊並掃描每個磁區,適合分割區完全遺失的情況。
- 採用 唯讀模式 運作,不會寫入受損磁碟,避免增加風險。
需要注意的是,Renee Undeleter 無法修復 Git 的內部資料庫。它的作用是恢復原始檔案,包括 .git 資料夾、pack 檔案、原始碼和設定檔。之後,Git 就能用自己的工具驗證並重建歷史紀錄。

Renee Undeleter 在救援流程中扮演什麼角色?

在 Renee Undeleter 中選擇分割區恢復,從 SD 卡恢復已刪除的影片
請根據您看到的狀況選擇掃描模式:
1. 如果分割區仍有磁碟代號,但無法讀取、受損或已格式化,請從 分割區恢復 開始。此模式會掃描現有檔案系統,並深度搜尋遺失的資料。
2. 如果磁碟完全沒有分割區,或在「磁碟管理」中顯示為「未配置」,或顯示為完全 RAW 狀態,請使用 整顆磁碟恢復 。此模式會掃描整個實體磁碟、重建分割區,並從每個找到的分割區中擷取檔案。
這兩種情況都能預覽恢復的項目,並儲存到安全位置。切勿存回原始磁碟。

如何使用 Renee Undeleter 恢復受損的 Git 儲存庫並重新連接 Git 歷史紀錄

以下是逐步工作流程:先確保實體資料安全,再使用 Renee Undeleter 擷取儲存庫檔案,最後重新組裝可運作的 Git 資料夾。

1. 停止使用該磁碟並建立安全環境

關閉受損電腦的電源。將受損磁碟作為次要磁碟連接到正常電腦(可使用 USB 轉 SATA 轉接線,或安裝在機殼內)。這樣可避免正常系統將新資料寫入受損磁碟區。
USB 3.0 SATA 硬碟外接盒,可加快資料恢復掃描速度

2. 安裝 Renee Undeleter 並選擇掃描模式

重要提示:請將軟體安裝在正常且獨立的磁碟上,切勿安裝在遺失儲存庫所在的磁碟。
啟動 Renee Undeleter。在主介面選擇符合您情況的掃描模式:
- 分割區恢復 – 當分割區存在但已受損或格式化時使用。
在 Renee Undeleter 中選擇分割區恢復,從 SD 卡恢復已刪除的影片
- 整顆磁碟恢復 – 當分割區遺失或整個磁碟未配置時使用。
在 Renee Undeleter 中選擇分割區恢復來掃描磁碟
選取目標分割區或實體磁碟,然後點擊「下一步」。

3. 掃描磁碟並將檔案恢復到其他位置

掃描時間會依磁碟大小與健康狀態而不同。掃描過程中,您可以預覽檔案。請尋找:
- .git 資料夾 及其內容(objectsrefsHEADconfig)。
- 位於 .git/objects/pack/ 內的 Pack 檔案
- 實際的原始碼和專案檔案。
找到所需內容後,勾選這些檔案並點擊「恢復」。
在 Renee Undeleter 中預覽並選取要恢復的檔案
關鍵注意:當系統要求選擇儲存位置時,請選擇另一個正常磁碟上的資料夾。若存回原始磁碟,可能會覆蓋尚未恢復的資料。
恢復整顆磁碟資料

4. 重新組裝 Git 儲存庫並進行驗證

將恢復的 .git 資料夾複製回正常磁碟上的專案目錄。在該資料夾中開啟終端機並執行:
git fsck --full
您可能會看到「dangling」物件錯誤,這是正常現象。關鍵錯誤(「object file is empty」、「broken link」)應該會減少。接下來,從遠端取得最新歷史紀錄,以補齊剩餘遺失的物件:
git fetch origin
git fetch origin(若之後確認要還原工作目錄,請先備份已恢復的檔案,再謹慎處理;不要直接使用 hard reset)
如果沒有可用的遠端儲存庫,請從同事的 clone 或備份中,手動補回仍然遺失的物件。

如何驗證儲存庫已恢復正常可用

重新組裝儲存庫後,請確認其完整性:
1. 執行: git fsck --full。如果輸出為空,或只列出 dangling objects ,表示物件資料庫是乾淨的。
2. 執行: git status。您應該會看到正常的工作樹(working tree),其中可能包含已恢復的變更。
3. 執行: git log --oneline -10。最近的 commits 應顯示正確的訊息與時間戳記。
4. 執行: git branch -a。所有本機和遠端追蹤分支都應可見。
5. 開啟關鍵專案檔案 ,確認內容完整且不是 0 位元組。

決策原則

如果 git fsck 沒有回報錯誤,git log 顯示預期的歷史紀錄,且檔案能正常開啟,表示儲存庫可安全使用。請立即將所有恢復的 commits 推送到遠端:
git push --all origin
然後為修復後的儲存庫建立新的完整備份。如果 git fsck 仍回報無法修復的問題,請從遠端 clone 乾淨副本,再手動套用已恢復的原始碼檔案。

常見問題 (FAQ)

Renee Undeleter 能恢復特定的 Git 物件(如單獨的 commit 或 blob)嗎?

Renee Undeleter 透過內部結構和副檔名恢復檔案,而不是依賴 Git 特定的物件雜湊值。掃描磁碟時,它能擷取 .git/objects/ 資料夾,其中包含所有存在的鬆散物件和 pack 檔案。這些檔案回到正常磁碟後,Git 自身的 fsck 就能識別哪些物件仍然有效。實務上,您恢復的是磁碟上實際存在的物件;軟體不會進一步細分至單一的 commitblob

直接重新 clone 儲存庫,一定比嘗試修復受損儲存庫更安全嗎?

如果遠端包含完整歷史紀錄,重新 clone 通常是最乾淨、最安全的選項,也能保證物件資料庫一致。不過,重新 clone 只有在遠端處於最新狀態時才有幫助。若您因磁碟損壞而遺失未推送的本機 commits,重新 clone 不會恢復這些 commits。這正是「Git 儲存庫檔案遺失、磁碟損壞」的關鍵場景。此時必須先恢復本機的 .git 資料,恢復並推送後,再切換到全新的 clone。

如何分辨是磁碟本身故障,還是只有 Git 中繼資料受損?

磁碟即將故障的跡象包括異常噪音(喀噠聲、摩擦聲)、讀寫速度極慢、即使在 Git 資料夾外也反覆出現 I/O 錯誤,以及 CrystalDiskInfo 等工具出現 S.M.A.R.T. 警告。如果磁碟通過完整表面掃描(例如 chkdsk /r),但只有 .git 目錄有問題,比較可能是邏輯問題。如果磁碟無法完成表面掃描,或顯示大量重新配置的磁區,就很可能是硬體故障。繼續使用會提高資料完全遺失的風險。
熱點推薦 立即開始免費資料恢復

簡單易用 簡單幾步即可從不同的儲存裝置救回檔案。

多種掃描方案 內建多種掃描方案,可針對不同的檔案丟失原因進行掃描救援!

多檔案類型救援 可從不同的儲存裝置中救回多種類型的檔案。

救援前可預覽 可邊掃描邊預覽已掃描到的檔案,確認檔案內容及質量後,可立即停止掃描進行救援!

適用於:Windows 10 / 8.1 / 8 / 7 / Vista / XP (32bit/64bit) & Mac OS 10.6 或以上

簡單易用 簡單幾步即可救回檔案。

多檔案類型救援 可從不同的儲存裝置中救回多種格式的檔案。

多種掃描方案 可針對不同的檔案丟失原因進行救援!

免費試用免費試用免費試用已有1000名用戶下載并使用Renee Undeleter成功救回丟失的檔案資訊!

使用者評論

Page 1

發表評論


您的留言已提交,正在等待審核。