从GitHub上的已删除分支恢复作为pull-request发送的提交

时间:2014-01-07 17:02:00

标签: git github

我做了些蠢事......

  1. fork 在GitHub上编辑了一个回购。
  2. 我做了一些更改,提交将它们放在我的叉子上。
  3. 我将此提交作为 pull-request 发送回原始回购。
  4. 这是一个愚蠢的部分:我删除 d我的前叉。
  5. 原始仓库的所有者在接受拉动请求之前请求对我的代码进行一些更改,我很乐意这样做。

    我尝试重新分配repo,但是我无法从pull-request中检出提交,它甚至不是作为“unlinked”提交(不属于任何分支或标记的提交) ,我不知道官方术语)

    我的问题是:如何恢复作为拉取请求发送的提交

    如果没有办法,在新提交中重新进行更改是一个选项,但是pull-request会丢失。 我的问题不在于不会丢失提交中的更改,而是关于不会丢失 git history ,这意味着保留提交的 SHA1 (以及我可能不知道的任何其他内容) )。

1 个答案:

答案 0 :(得分:9)

可以fetch pull requests to your local machine

如果没有相关拉取请求的链接,很难测试这是否有效,但您可以尝试

  1. 创建一个新的存储库,
  2. 克隆你的新叉子,
  3. fetch来自上游存储库的拉取请求

    git remote add upstream https://github.com/User/repository.git
    
    $EDITOR .git/config
    # Add `fetch = +refs/pull/*/head:refs/remotes/upstream/pr/*` to
    # the relevant section, as outlined in the linked page. Note that
    # we use `upstream` instead of `origin` as the target.
    
    git fetch upstream
    
  4. merge拉取请求到您的本地存储库,例如

    git checkout master
    git merge --ff-only upstream/pr/1
    
  5. 然后push回到你的新叉子。

  6. 如果失败,您可以向GitHub提交支持请求,要求他们恢复您的存储库。来自FAQ about security

      

    我们不会在用户删除时从追踪中追溯删除存储库,因为如果用户意外删除了存储库,我们可能需要为其恢复存储库。

    要尽快启动此过程contact their support team

相关问题