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


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


-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
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.