Запрос на объединение в другую ветку, отличную от стандартной, в Github - PullRequest
105 голосов
/ 04 февраля 2012

В мой репозиторий, размещенный на Github, приходит запрос на извлечение.По умолчанию он объединен с веткой master.

Можно ли как-то изменить, в какую ветку будут объединены изменения?

Ответы [ 6 ]

63 голосов
/ 17 августа 2016

По состоянию на 15.08.2016 GitHub позволяет изменять целевую ветвь пул-запроса через графический интерфейс.Нажмите Edit рядом с заголовком, затем выберите ветвь из выпадающего списка.

screenshot

Теперь вы можете изменить базовую ветвь открытого запроса извлечения.После того, как вы создали запрос на извлечение, вы можете изменить базовую ветвь так, чтобы изменения в запросе на извлечение сравнивались с другой ветвью.Изменяя базовую ветвь вашего исходного запроса извлечения, а не открывая новую с правильной базовой ветвью, вы сможете сохранить ценную работу и обсуждение.

52 голосов
/ 04 февраля 2012

Отправитель может изменить это, когда он выдает запрос на извлечение, но как только он выдает его, вы не можете изменить его.

С другой стороны, вы можете вручную объединить их ветвь и push, что я полу-регулярно делайте для неверных адресных запросов.

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

Этот драгоценный камень упаковываетручной процесс, который является следующим:

  1. Добавьте удаленный для вилки к вашей локальной проверке.
  2. Получите этот удаленный.
  3. git checkout ${target_branch} && git merge ${remote}/${branch}
  4. git push origin ...
13 голосов
/ 14 января 2014

Альтернативой использованию гема-концентратора, упомянутого в других ответах, является использование командной строки для объединения локально извлекаемых запросов , что позволяет вам:

$ git fetch origin
$ git checkout *target_branch*
$ git merge pr/XXX
$ git push origin *target_branch*

Приведенные выше команды работают напрямую, только если вы сначала добавили следующую строку в файл .git/config:

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

Это позволяет загружать ВСЕ запросы на получение. Поскольку это может быть нежелательно для больших репозиториев, GitHub изменил инструкции, добавив в них синтаксис git fetch origin pull/ID/head:BRANCHNAME, что позволяет избежать изменения файла конфигурации и загружает только этот одиночный запрос на извлечение.

8 голосов
/ 25 ноября 2013

Нет ничего плохого в решении Даниэля Питтмана, однако я бы отнесся к этим слияниям как к «без ускоренной перемотки вперед», то есть изменив шаг № 3 для:

git checkout ${target_branch} && git merge --no-ff ${remote}/${branch}

Используя --no-ff,историю будет легче читать.В нем будет четко сказано, что $n коммиты пришли от $branch, и это также облегчит вашу жизнь, если вам нужно будет отменить что-то, сделанное в этой ветке.

Чтобы также ответить на вопрос eoinoc и дать дополнительный совет:

После слияния ваш git cli предложит вам написать сообщение, как правило, появится общее сообщение, говорящее что-то вроде

Слияние ветки удаленного отслеживания 'user /их ветка 'в вашу ветку

Обязательно отредактируйте это сообщение и добавьте ссылку на номер запроса на извлечение.То есть: (при условии, что номер запроса на получение равен 123)

Объединить ветку удаленного отслеживания 'user / их-ветку' с вашей веткой

refs # 123, решая все, что угодно ...

Так что в следующий раз, когда вы зайдете на свою страницу проблем / запросов на github и проверите этот конкретный запрос на получение, вы увидите ваше сообщение со ссылкой для фиксации в месте слияния.

Вот скриншот того, что я имею в виду.

enter image description here

7 голосов
/ 12 сентября 2014

Хотя вы не можете изменить существующий пул-запрос, поскольку он не ваш, вы можете легко создать новый, если связанный исходный репозиторий все еще существует - да, даже если это чей-то другой.

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

Затем вернитесь в свой собственный репозиторий и примите новый запрос на извлечение. Voila!

5 голосов
/ 09 июля 2015

Для этого перейдите на домашнюю страницу вашего репозитория, нажмите на ветки и измените ветку по умолчанию с master на что-то другое, в моем случае «dev».

После этого, всякий раз, когда кто-то создает запрос на извлечение, кнопка merge автоматически объединяет запрос в «dev», а не в master.

enter image description here

...