2014-01-07 2 views
7

я сделал что-то глупо ...Восстановление коммит послали тянущий-запрос от удаленной вилки на GitHub

  1. I вилок ­ эд репо на GitHub.
  2. Я внесла некоторые изменения, совершить ­ ted их на моей вилке.
  3. Я отправил эту фиксацию как pull-request назад к первоначальному репо.
  4. Здесь идет глупая часть: I удалить ­ d моя вилка.

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

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

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

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

+0

Так вы внесли изменения прямо на сайт без клонирования чего-либо в git? Если вы клонировали свою вилку, вы уже удалили клон на своем компьютере? – Ajedi32

+0

Я клонировал его на свой компьютер, но я тоже удалил его. – 1ace

ответ

8

Возможно 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 его обратно в свою новую вилку.

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

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

Чтобы начать этот процесс, contact their support team как можно скорее.

+0

Отлично! Это именно то, что я искал :) – 1ace

+0

@ Крис: Спасибо за ваш ответ. Мне тоже помогли следующие ссылки. Как для пункта 3, упомянутого выше: http://stackoverflow.com/questions/6743514/how-can-i-fetch-an-unmerged-pull-request-for-a-branch-i-dont-own/9903203#9903203 И http://stackoverflow.com/questions/2643502/git-permission-denied-publickey/16465182#16465182 – pablofiumara

+0

@ Крис, это чистое золото! Тем не менее, я не уверен, как именно я могу добавить новые коммиты поверх существующего запроса на тягу, не создавая новый. Нажатие на новую вилку не работает так, как ожидалось, в этом случае, так как старый запрос на тягу поступает из неизвестного репозитория (удаленная вилка). Любые подсказки оцениваются – appoll

Смежные вопросы