You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决从GitHub恢复已删除提交时的参数及404错误

恢复GitHub已删除提交的问题解决方案

一、修复Invoke-WebRequest参数错误

你遇到的是PowerShell命令的参数格式问题,按以下方式修正:

  • 解决InFile参数缺失错误:如果你的操作不需要上传文件,直接移除-InFile参数即可。
  • 解决Headers类型转换错误:PowerShell的Headers参数要求传入哈希表(Hashtable),而非字符串。正确写法示例:
    # 先定义哈希表格式的请求头
    $authHeaders = @{
        "Authorization" = "token 你的GitHub个人访问令牌"
        "Accept" = "application/vnd.github.v3+json"
    }
    # 发起API请求
    Invoke-WebRequest -Uri "https://api.github.com/repos/你的用户名/你的仓库名/git/commits/孤儿提交ID" -Headers $authHeaders
    
    或者直接内嵌哈希表:
    Invoke-WebRequest -Uri "https://api.github.com/repos/你的用户名/你的仓库名/git/commits/孤儿提交ID" -Headers @{"Authorization"="token 你的GitHub个人访问令牌"; "Accept"="application/vnd.github.v3+json"}
    
    注意:替换你的GitHub个人访问令牌为带repo权限的令牌,你的用户名/你的仓库名和孤儿提交ID为实际信息。

二、解决提交URL返回404的问题

出现404的常见原因及处理:

  • 提交已被GitHub垃圾回收:孤儿提交(无任何引用指向)会在90天后被自动清理,若超过这个期限,提交无法恢复。
  • 提交ID输入错误:核对提交ID的大小写和完整性(Git提交ID为40位十六进制字符,也可使用前7位但需确保唯一)。
  • 权限不足:网页版URL需要仓库访问权限,若没有权限会返回404,改用上面的API请求并带上令牌即可验证提交是否存在。

三、其他恢复途径

如果上述方法无效,尝试以下方案:

  • 检查本地仓库reflog:若你之前克隆过该仓库,本地git reflog可能保留提交记录。执行git reflog找到目标提交ID,再用git checkout -b 恢复分支名 提交ID创建分支恢复,之后推送到远程。
  • 联系GitHub支持:若提交是近期删除且非常重要,可通过GitHub官方支持渠道提交请求,提供提交ID说明情况,尝试申请恢复(不保证成功)。
  • 检查其他克隆/分支:询问团队成员的本地仓库是否保留该提交,或查找是否有备份分支包含目标提交。

内容的提问来源于stack exchange,提问作者Kenor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 03:20:12