研究
github-commit-recovery avatar

github-commit-recovery

透過 REST API、git fetch 和直接 URL 存取來還原已刪除或被強制推送 (force-push) 的 GitHub 提交內容、差異檔 (diffs) 和元數據的工具。

簡介

github-commit-recovery 技能是一款專為 GitHub 儲存庫中的數位鑑識與安全研究而設計的專業工具。它允許研究人員與開發人員取回不再被任何活躍分支所引用的提交數據(通常是由於強制推送或刪除操作所致)。即使 GitHub 從使用者介面中移除了引用,底層的提交物件通常仍會儲存在其基礎架構中,若已知具體的 SHA,便可透過特定方式存取。此技能可自動化發現與提取此類物件,確保在安全審計或事件回應期間的數據完整性。

  • 直接從 GitHub 伺服器端點使用提交 SHA 取回原始提交內容、修補檔 (.patch) 與統一差異檔 (.diff)。

  • 整合 GitHub REST API 以擷取全面的元數據,包括作者身份、驗證狀態以及檔案層級的修改紀錄。

  • 利用最佳化的 git fetch 操作,包含 --filter=blob:none 與 --no-checkout,在不克隆整個儲存庫的情況下提取特定物件。

  • 支援提交列表的批次處理,適合進行大規模鑑識調查或驗證多個儲存庫的歷史紀錄。

  • 具備速率限制管理與延遲機制,避免在與 GitHub 基礎架構互動時遭到封鎖。

  • 當您從 CI/CD 日誌、reflogs 或外部安全報告中取得孤立的提交 SHA,且需要重構原始代碼狀態時,請使用此技能。

  • 若需進行高頻查詢,請務必透過 GitHub Token 進行身份驗證,以享有每小時 5,000 次請求的額度,而非未驗證狀態下的 60 次。

  • 請注意,雖然可以使用短 SHA(4 個十六進位字元)進行查詢,但建議使用完整 SHA 以避免碰撞風險。

  • 此工具是針對被強制推送覆蓋的懸掛提交(dangling commits)的強大檢索機制;但請注意,它不會將提交『恢復』到儲存庫的可見歷史中,而是將該物件暴露出來以供分析與提取。

  • 非常適合 OSINT 調查、驗證提交作者身份(區分作者與提交者),以及檢視那些因後續強制推送而被掩蓋的安全敏感性變更。

倉庫統計

Star 數
2,385
Fork 數
367
Open Issue 數
17
主要語言
Python
預設分支
main
同步狀態
閒置
最近同步時間
2026年4月29日 上午08:55
在 GitHub 查看