Восстановить фиксацию, отправленную как запрос на извлечение из удаленной вилки на GitHub

Я сделал что-то глупое...

  • Я fork & shy; отредактировал репо на GitHub.
  • Я внес некоторые изменения, совершить и застенчиво, привязал их к своей вилке.
  • Я отправил этот коммит как pull-request обратно в исходное репо.
  • Вот глупая часть: я удалить и застенчиво; d моя вилка.

Владелец оригинального репо запросил пару изменений в моем коде, прежде чем он смог принять запрос на pull-запрос, который я бы с удовольствием сделал.

Я попробовал повторное форматирование репо, но я не могу проверить фиксацию из запроса pull, он даже не существует как "несвязанный" commit (коммит, который не является частью какой-либо ветки или тега, я не делаю не знаю официальной терминологии).

Мой вопрос: как я могу восстановить фиксацию, отправленную как запрос на перенос?

Если нет способа, повторное выполнение изменений в новой фиксации является опцией, но запрос pull-request будет потерян. Мой вопрос заключается не в том, чтобы не потерять изменения от фиксации, а о том, чтобы не потерять историю git, то есть сохранить фиксацию SHA1 (и все, что я мог бы не знать).

Ответ 1

fetch можно отправить запросы на локальный компьютер.

Без ссылки на запрос на растяжение трудно проверить, будет ли это работать, но вы можете попробовать

  • создать новую вилку репозитория,
  • клонировать новую вилку,
  • 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
    
  • merge запрос на извлечение в ваш локальный репозиторий, например

    git checkout master
    git merge --ff-only upstream/pr/1
    
  • а затем push вернитесь к новой вилке.

Если это не удается, вы можете отправить запрос поддержки в GitHub с просьбой восстановить ваш репозиторий. Из часто задаваемых вопросов о безопасности:

Мы не ретроактивно удаляем репозитории из резервных копий при их удалении пользователем, так как нам может понадобиться восстановить репозиторий для пользователя, если он был удален случайно.

Чтобы начать этот процесс, свяжитесь с их службой поддержки как можно скорее.