2016-10-05 7 views
1

Я разработал проект, создал новую ветку от мастера, внесли изменения и создал запрос на извлечение оригинального проекта. Но вдруг я забыл, что создал этот запрос на растяжение и полностью удалил свою вилку из удаленного (GitHub) и с моего компьютера. Как я могу воссоздать ветку (или вилку) из запроса на растяжение, чтобы добавить изменения и позволить слиянию?Как воссоздать ветку из запроса на растяжение?

+0

До сих пор открыт PR? Если вы удаляете ветку в своей вилке, PR автоматически закрывается. Не уверен, что произойдет, если вы удалите вилку. – Vampire

+0

По-прежнему открыт, только с примечанием: «от ** я/ветвь удалена ** до ** проекта/мастера **« – aleskva

+0

* точно »в ** проект: мастер ** из ** неизвестный репозиторий **« – aleskva

ответ

1

Есть две вещи, которые вы можете сделать: поддержка

1. Контакт GitHub

При попытке мое решение для вас я удалил вилку, где у меня был PR, который все еще ожидал и имел такую ​​же ситуацию, как и вы.

В настоящее время нет возможности подключиться к этому PR, кроме того, чтобы связаться с поддержкой GitHub. Они могут восстановить удаленную вилку, которая также будет привязана к ожидаемому PR. Затем вы можете просто клонировать свою вилку, менять свою ветвь PR и нажимать.

Это было несколько минут в моем случае, пока сотрудники GitHub не ответили на контактную форму. аплодировали GitHub

2. Создайте новый PR

Если вы не хотите беспокоить поддержку GitHub или они слишком медленно для вас или не хотят, вы можете сделать следующее:

  • воссоздавать вилку
  • воссоздавать свою ветку из запроса тяговой делая git fetch <your configured remote for upstream> refs/pull/<your PR number>/head:<your branchname>

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

+0

git fetch дает мне «фатальный:« вверх по течению »не является репозиторием git fatal: Не удалось прочитать из удаленного репозитория. Пожалуйста, убедитесь, что у вас есть правильные права доступа и существует репозиторий. ' – aleskva

+0

, конечно, вы должны указать, как удаленный назван в вашем локальном репозитории. Для меня я следую широко распространенному соглашению о том, что моя вилка называется «origin», а master repo называется «upstream». – Vampire

+0

Мне, наконец, удалось сделать это, используя 2-й способ (извлечение кода с помощью вашего ответа и создание нового PR), спасибо – aleskva

0

Один из способов исправить это:

$ mkdir repo 
$ git init; git remote add origin [email protected]:original/repo.git # not your fork 

Теперь откройте .git/config и добавьте следующую строку:

fetch = +refs/pull/*/head:refs/remotes/origin/pr/* 

так гласит:

[remote "origin"] 
    url = [email protected]:original/repo.git 
    fetch = +refs/heads/*:refs/remotes/origin/* 
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/* 

Затем запустите

$ git fetch origin 
$ git checkout origin/pr/<your pr number, as shown in their github repo> 

Затем просто добавить новый пульт к вилке, и подтолкнуть вверх ветви

+0

'git fetch origin' производит это: 'Permission denied (publickey). fatal: Не удалось прочитать из удаленного хранилища. Пожалуйста, убедитесь, что у вас есть правильные права доступа и существует хранилище. ' – aleskva

+0

А, хорошо, со знанием области refs/pull/names, мое решение выше становится намного проще.:-) Но разве у этого не было бы такой же проблемы, как мое решение, что PR больше не привязан к вашему репо, как только вы удалите вилку? Или вы можете как-нибудь снова подключиться? – Vampire

+0

Это может быть, но я надеюсь, что смогу получить хотя бы код из этого PR (это было одно коммит, поэтому это может быть проще), и затем создайте новый PR и новую ветку. – aleskva

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