研究
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 查看