从GitHub上删除的叉上恢复作为拉取请求发送的提交 [英] Recover a commit sent as a pull-request from a deleted fork on GitHub

查看:432
本文介绍了从GitHub上删除的叉上恢复作为拉取请求发送的提交的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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


  1. I fork &害羞;在GitHub上编辑回购。
  2. >
  3. 我做了一些更改,提交和害羞;把它们放在我的分支上。
  4. $ b $ b

原始仓库的所有者请求在我的代码中进行一些更改,然后他才能接受请求,我很乐意这样做。



我尝试重新分解回购,但是我无法检出拉取请求中的提交,它甚至没有作为未链接提交(提交不是任何分支或标签的一部分,我不知道官方术语)

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



如果没有办法,重新执行新提交中的更改是一个选项,但拉取请求WO会丢失。
我的问题不是关于不会失去提交的更改,而是关于不丢失 git历史记录,这意味着保留提交的 SHA1 (以及其他任何我可能不知道)。

解决方案

有可能 fetch 将请求发送到您的本地计算机



如果没有链接到请求的请求,很难测试这是否可行,但您可以尝试创建


  1. 创建
  2. 克隆您的新分支,
  3. fetch 你从上游存储库获取请求,

      git remote add upstream https://github.com/User/repository.git 

    $编辑器.git / config
    #添加`fetch = + refs / pull / * / head:refs / remotes / upstream / pr / *`至
    #相关部分,如链接页面中所述。请注意,
    #我们使用`upstream`而不是`origin`作为目标。

    git fetch upstream


  4. 合并将请求拉入本地存储库,例如

      git checkout master 
    git merge - -ff-only upstream / pr / 1


  5. 然后 push

  6. 如果失败了,您可以提交支持请求GitHub要求他们恢复您的存储库。从关于安全性的常见问题


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


    要启动此过程,请尽快联系他们的支持团队

    I did something stupid…

    1. I fork­ed a repo on GitHub.
    2. I made some changes, commit­ted them on my fork.
    3. I sent this commit as a pull-request back to the original repo.
    4. Here comes the stupid part: I delete­d my fork.

    The owner of the original repo requested a couple changes in my code before he could accept the pull-request, which I'd gladly do.

    I tried re-forking the repo, but I can't checkout the commit from the pull-request, it's not even there as an "unlinked" commit (a commit that is not part of any branch or tag, I don't know the official terminology).

    My question is: How can I recover the commit sent as a pull-request ?

    If there's no way, re-doing the changes in a new commit is an option, but the pull-request would be lost. My question is not about not losing the changes from the commit, it's about not losing the git history, meaning keeping the commit's SHA1 (and anything else I might not be aware of).

    解决方案

    It is possible to fetch pull requests to your local machine.

    Without having a link to the pull request in question it's hard to test whether this will work, but you can try to

    1. create a new fork of the repository,
    2. clone your new fork,
    3. fetch your pull request from the upstream repository,

      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 the pull request into your local repository, e.g.

      git checkout master
      git merge --ff-only upstream/pr/1
      

    5. and then push it back to your new fork.

    If that fails, you can submit a support request to GitHub asking them to restore your repository. From an FAQ about security:

    We do not retroactively remove repositories from backups when deleted by the user, as we may need to restore the repository for the user if it was removed accidentally.

    To initiate this process, contact their support team as soon as possible.

    这篇关于从GitHub上删除的叉上恢复作为拉取请求发送的提交的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆