Как изменить базовую ветку запроса на вытягивание?

79

Я создал запрос на перенос проекта на GitHub в конкретную удаленную ветку. Через некоторое время удаленная ветка была удалена.

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

Маркос Винисиус да Силва
источник
3
Также запрашивается на: github.com/isaacs/github/issues/18 , сообщение отправлено на GitHub и получен стандартный ответ «мы добавим к нашему внутреннему багтрекеру».
Чиро Сантилли 郝海东 冠状 病 六四 事件 法轮功

Ответы:

79

Обновлено: как отмечает Майкл ниже, теперь это возможно :

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

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

Анимированный пример изменения базовой ветви запроса на вытягивание.


Старый ответ

Вы не можете. Просто сделайте новый запрос на перенос.

Янтарь
источник
10
прямо к делу, но не совсем верно - см. этот ответ.
Том
7
Полагаться на недокументированные (и потенциально непреднамеренные) функциональные возможности API - это верный путь к печальным последствиям.
Эмбер
15
Никто ничего не сказал о том, чтобы полагаться на недокументированную функциональность API. Этот вопрос требует решения разовой проблемы, а не постоянно поддерживаемого текущего решения. Тем не менее, сказать, что «Вы не можете», просто неправда.
Tom
5
В любом случае недокументированный API сейчас сломан (см. Комментарии к другому ответу), и это довольно печально.
dequis
2
По состоянию на 15.08.2016 можно. См. Ответ Майкла.
Maliayas
35

Хотя это и недокументировано, вы можете сделать это с помощью GitHub REST API.

В этом ответе объясняется использование API , но в основном вы можете отправить запрос REST, подобный этому:

$ curl --user "tom" \
       --request PATCH \
       --data '{"issue": "15", "head": "tom:new-branch", "base": "master"}' \
       https://api.github.com/repos/fred/fabproj/pulls

Это изменит запрос на вытягивание, реализованный в выпуске 15 в fred/fabprojрепо, на использование new-branchветки на tom/fabprojвилке.

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

Том
источник
1
Не удалось заставить его работать. Он жаловался, что поле issueимело неправильное значение, возможно, предполагая, что вы больше не можете изменять уже созданные запросы на перенос. Позор.
mxcl
1
Вы уверены, что правильно ответили на вызов API? Насколько я могу судить, это все еще должно работать и (вроде) задокументировано. См. Developer.github.com/v3/pulls (и выполните поиск по запросу «Создать запрос на перенос», затем посмотрите «Альтернативный ввод»)
Том
14
Я попробовал это снова сегодня и могу подтвердить, что он больше не работает. Я продолжу изучать REST API в надежде найти другой способ сделать это.
Tom
1
Согласно документам разработчика, тип запроса должен быть PATCH. Другое дело, что модификация головы / основания на данный момент не поддерживается. Ссылка: developer.github.com/v3/pulls/#update-a-pull-request
Шекхар,
4
Привет, Цзянь, как сказал Том в комментариях от 13 декабря 2012 года, это (к сожалению!) Больше не работает ... что жаль, так как я мог бы извлечь из этого пользу сегодня, но, увы!
pvandenberk 03
19

По состоянию на 15.08.2016 это теперь возможно через Github :

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

Майкл Клиффорд
источник
как это работает - нужно нажать кнопку редактирования заголовка, а затем появляется кнопка "base:", готовая к изменению.
AnneTheAgile
2

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

Пример: мой PR имеет имя типа «dev-4.9». Есть еще одна ветка, которая называется «qa-4.9». Все, что я хочу, это чтобы "qa-4.9" был целевой веткой PR. Шаги: 1 1) Переименуйте ветку "dev-4.9" на другое "original-dev-4.9"

git checkout dev-4.9
git branch -w original-dev-4.9
git push origin original-dev-4.9

2) Переименуйте ветку "qa-4.9" в "dev-4.9".

git checkout qa-4.9
git branch -w dev-4.9
git push origin dev-4.9 -f (force push to write entire branch to reflect dev-4.9)

3) Обновите URL-адрес PR и посмотрите, какие коммиты в qa-4.9 отражены там.

Сатиш
источник
1

Вместо того, чтобы терять все комментарии, связанные с PR, в удаленную ветку:

  1. снова создайте ветку локально с тем же именем и тем же содержимым, которое имеет ветка, которую вы хотите объединить;
  2. нажмите эту ветку, чтобы воссоздать удаленную ветку; а потом
  3. заново открыть ПР в филиал.

Например, у вас есть PR для ветки 1, которая удаляется. Теперь вы хотите объединиться, чтобы составить и сохранить комментарии к существующему PR:

  1. мастер проверки git
  2. git pull
  3. git checkout -b branch1
  4. git push
  5. повторно откройте свой PR в branch1
  6. при слиянии с веткой1, слияние с мастером.

Это немного взломано, но намного лучше, чем уничтожать множество комментариев.

Уильям Зеллер
источник
Я не следил за тем, чтобы начать с этого, просто чтобы прояснить для других читателей (либо> = тупой, как я), это если вы контролируете репо, в которое был отправлен ваш PR. Я искал способ обновить свой PR, который я отправил в проект с открытым исходным кодом, который я не контролирую.
rtpHarry
0

Github теперь поддерживает это. Кнопка редактирования в правом конце PR.

Джулиан Джозеф
источник
-2

Теоретически...

вы должны использовать github api .

пример: отредактировать запрос на перенос с помощью curl

curl --user "your_github_username" \
     --request PATCH \
     --data '{"title":"newtitle","body":"newbody",...}' \
     https://api.github.com/repos/:owner/:repo/pulls/:number

вы можете найти подробный список данных в документации разработчика github

пример: изменить имя моего запроса на перенос

curl --user "jeremyclement" \
     --request PATCH \
     --data '{"title":"allows the control of files and folders permissions."}' \
     https://api.github.com/repos/Gregwar/Cache/pulls/9

но на практике ...

похоже, что поля head/labelи head/refредактировать нельзя. На данный момент, кажется, единственное решение - Эмбер.

гексаДжер
источник
Что это добавляет к текущим ответам?
Léo Lam,
Это подтверждает ответ Эмбер, несмотря на ответ Тома.
hexaJer
2
Что подтверждает, что этот ответ вообще не нужен. Это ничего не добавляет к текущим ответам. В ответе Тома уже есть уведомление о том, что он больше не применяется, и комментарии также указывают на это.
Léo Lam