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

1ac*_*ace 10 git github

我做了一些愚蠢的事......

  1. 编在GitHub上回购.
  2. 我做了一些修改,提交特德他们对我的叉子.
  3. 我将此提交作为拉回请求发送回原始回购.
  4. 这里说到愚蠢的一部分:我删除 d我的叉子.

原始仓库的所有者在他接受拉动请求之前请求对我的代码进行一些更改,我很乐意这样做.

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

我的问题是:如何恢复作为pull-request发送的提交

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

Chr*_*ris 9

可以fetch将请求提取到本地计算机.

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

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

    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
    
    Run Code Online (Sandbox Code Playgroud)
  4. merge pull请求进入本地存储库,例如

    git checkout master
    git merge --ff-only upstream/pr/1
    
    Run Code Online (Sandbox Code Playgroud)
  5. 然后push它回到你的新叉子.

如果失败,您可以向GitHub提交支持请求,要求他们恢复您的存储库.从安全常见问题解答:

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

要启动此过程,请尽快与其支持团队联系.

  • 我尝试了这些,git 也能够获取所有 PR,这很好。但在第四步(git merge --ff-only upper/pr/230)它返回“致命:无法快进,中止”。 (2认同)