【问题标题】:How to recover lost commits without using git reflog?如何在不使用 git reflog 的情况下恢复丢失的提交?
【发布时间】:2020-08-30 05:10:26
【问题描述】:

By somehow 我不小心强行推送了一个分支,我没有拉取只存在于远程的提交。

通常,当这种情况发生时,它可以使用 git reflog 命令恢复,但这次丢失的提交只在远程仓库中。

如何恢复那些只存在于 GitHub 存储库中的提交?

【问题讨论】:

    标签: git github github-api


    【解决方案1】:

    使用 GitHub API 只需几个步骤即可完成:

    1. 转到此网址:https://api.github.com/repos/<user>/<repo>/events

    这将返回/显示一个 JSON 对象,您可以在其中使用 CTRL+F 搜索丢失的提交并放置提交消息或作者。

    1. 复制提交的完整 SHA 并将其粘贴到以下命令中:
    curl -u <user>:<password> -i -H "Accept: application/json" -H "Content-Type: application/json" -X POST -d '{"ref":"refs/heads/recover-commits", "sha":"<full_commit_sha>"}' https://api.github.com/repos/<user>/<repo>/git/refs
    

    字段:

    • &lt;user&gt;:&lt;password&gt;:您的 GitHub 帐户的用户名和密码。

    • refs/heads/&lt;branch-name&gt;: 新分支的 ref,必须有两个斜杠并以“refs”开头。最后一个斜线之后是分支的名称

    • sha:提交的sha,例如:“efdec9f65bf420b1af91ad1aded915a42c5fa34d”

    • &lt;repo&gt;:存储库名称。

    它将使用 GitHub API 发送一个请求以创建一个名为“recover-commits”的新分支,该分支指向该提交。

    1. 如果成功,它应该返回如下内容:HTTP/1.1 201 Created Server: GitHub.com ...

    2. 您可以从那里挑选或合并提交回您的主分支。

    Source.

    【讨论】:

      猜你喜欢
      • 2019-06-15
      • 1970-01-01
      • 2023-04-07
      相关资源
      最近更新 更多