Watch at Ease看見世界,讀懂生活。

技術 · 實用指南

Git LFS 複製後只剩指標文字?改寫歷史前先證明物件交付

保留指標,逐層核對屬性、端點、物件擷取與 checkout,再驗證精確 SHA-256 和大小。

zh-TW Original Git LFS object delivery chain
原創編輯插畫: prove every Git LFS delivery boundary. Watch at Ease

工作樹裡的 Git LFS 指標不等於檔案損壞。它記錄規範版本、SHA-256 物件 ID 與位元組大小;故障可能位於屬性、smudge 政策、端點、驗證、遠端物件或 checkout。

先保留 clone 與指標,再證明從提交指標到精確物件位元組的整條鏈,避免把可復原的缺物件事故變成歷史改寫。

保留指標並分類

複製可疑檔案,記錄路徑與 commit,只讀檢查 version、oid sha256 與 size。

若不是有效指標就停止;若有效,不要手動替換、廣泛 reset 或啟動 migrate。

證明本 ref 的追蹤範圍

用 git check-attr 與 git lfs ls-files 核對路徑、OID 與 .gitattributes。

記錄 git lfs env、版本、ref 與 filter;正確提交仍可能因 filter 被跳過而留下文字。

分開 smudge、fetch 與 checkout

檢查 GIT_LFS_SKIP_SMUDGE、fetchexclude 與 CI 設定;跳過 smudge 不等於物件遺失。

針對精確 remote/ref fetch 並保存狀態,再 checkout 選定路徑,分開下載與物化證據。

證明端點與遠端可用性

記錄 LFS 端點與驗證;Git 走 SSH 時,LFS 仍可能走 HTTPS。

區分 401、403、404、逾時與排除。精確 OID 的 404 不能靠重裝或 reset 修復。

窄範圍物化並驗證

確認本地 object store 已有 OID,再只 checkout 受影響路徑,不先用 fetch --all。

核對 SHA-256、大小與 git status,直到每個邊界都有證據。

zh-TW Original Git LFS pointer-to-bytes evidence tree
原創編輯插畫: preserve evidence and verify exact object bytes. Watch at Ease