разветвление запроса на извлечение с помощью git/github

Я работаю над проектом в github. Пользователь создал запрос на извлечение. Я хотел бы отказаться от этого запроса на вытягивание. Как мне это сделать? Я не вижу в документации по git ничего, что сразу бросалось бы мне в глаза, но я вполне уверен, что это возможно...


person basil    schedule 09.04.2019    source источник
comment
Как насчет того, чтобы создать новую ветку, объединить запрос на включение и разветвить его?   -  person Nimesh Neema    schedule 09.04.2019
comment
@NimeshNeema, как бы я это сделал? Это пиар для апстрима.   -  person basil    schedule 09.04.2019
comment
Возможный дубликат Как быстро получить запрос на вытягивание локально   -  person phd    schedule 09.04.2019
comment
stackoverflow.com/search?q=%5Bgithub%5D+pull+request+locally   -  person phd    schedule 09.04.2019


Ответы (2)


У меня уже есть исходное репо. Как я могу ввести PR в свою вилку и ответвления от нее?

  1. Если вы еще этого не сделали, клонируйте свою вилку, чтобы у вас была локальная копия вашей вилки на вашем компьютере.

  2. Добавьте репозиторий, из которого PR приходит как удаленный к вашему клону:

    git remote add the-pr-repo [email protected]:the-pr-user/the-pr-fork.git
    
  3. Оформить ветку PR в локальном репозитории:

    git fetch the-pr-repo
    git checkout the-pr-branch
    

Теперь у вас есть копия ветки PR в вашем локальном репозитории, и вы можете создавать, тестировать и делать что угодно.

Это пиар для апстрима.

PR по-прежнему просто указывает на ветку. «Запрос на извлечение» — это буквально запрос на перенос коммитов из данной ветки в какую-то другую ветку. Допустим, PR сделан из репозитория с именем basil и указывает ветку с именем basils-changes, а PR просит добавить коммиты из basils-changes в ветку master репозитория upstream. Я могу легко получить те же самые изменения, сначала убедившись, что у меня есть локальная ветка, обновленная до upstream/master, а затем перетащив basil/basils-changes в мою локальную ветку. Это даст мне именно то, что будет у upstream/master, если PR будет объединен, поэтому я могу протестировать изменения локально, чтобы решить, хочу ли я объединить PR с upstream/master.

person Caleb    schedule 09.04.2019
comment
как я могу выйти из ветки PR после ее добавления в мой форк? - person basil; 09.04.2019
comment
Вы не разветвляете PR, вы просто втягиваете ветвь PR в свою вилку, используя git checkout. Если вы хотите создать новую ветку оттуда, вы можете сделать это снова с помощью git checkout -b your_new_branch_name. Или вы можете просто внести изменения в свою копию ветки PR. PR ничего не меняет в обычном использовании git — это просто указатель на конкретную ветку. Если владелец ветки добавит фиксацию в свою ветку и подтолкнет ее к своей вилке, PR покажет это, потому что, опять же, PR просто указывает на ветку. - person Caleb; 09.04.2019
comment
есть ли способ объединить его с веткой, над которой я работаю? - person basil; 11.04.2019
comment
Это просто ветка, поэтому, конечно, вы можете перетащить ее в другую ветку. Или вы можете перебазировать свою ветку поверх ветки PR. Выполнение последнего часто лучше, если вы планируете объединить как PR, так и свою собственную ветку в другую ветку (например, master), потому что это сохраняет отдельные коммиты PR и помогает избежать конфликтов слияния. - person Caleb; 11.04.2019
comment
понимание того, что происходит, прекрасно. я просто хочу знать команды, чтобы сделать это. боже, я ненавижу мерзавца - person basil; 11.04.2019
comment
Термины, которые я использовал выше, сопоставляются непосредственно с именами команд git. Если вы хотите подтянуть другую ветвь к своей, это git pull <the_other_repo> <the_other_branch>. Если вы хотите перебазировать, это git rebase <the_other_repo>/<the_other_branch>. Если вы не уверены, какие параметры подходят для какой-либо команды, добавьте параметр --help (например, git pull --help). Я понимаю ваше разочарование, но вам станет легче, если вы продолжите в том же духе. Сопротивление бесполезно. - person Caleb; 12.04.2019

PR основаны на филиалах. Разветвление репозитория создает новую копию репозитория в вашей учетной записи, включая все отправленные ветки. Запросы на вытягивание не копируются как часть процесса разветвления.

Перейдите к запросу на вытягивание и найдите ветку, на которой он основан:

pull request, показывающий ветку

Затем сделайте форк репозитория. Вы найдете ветку в своем новом репозитории и сможете воссоздать PR или создать другую ветку оттуда.

person bpaul    schedule 09.04.2019
comment
Я не совсем понимаю, что вы имеете ввиду. У меня уже есть исходное репо. Как я могу ввести PR в свою вилку и ответвления от нее? - person basil; 09.04.2019
comment
Тогда это довольно просто. Вы просто хотите найти ветку от исходного PR, проверить ее и сделать из нее ветку. - person bpaul; 09.04.2019