Як змінити базову гілку запиту на витягування?


79

Я створив запит на вилучення проекту на GitHub до певної віддаленої гілки. Через деякий час віддалену гілку було видалено.

Як я можу змінити запит на витягування, щоб вказати на іншу гілку (зокрема master)?


3
Також запитується за адресою: github.com/isaacs/github/issues/18 , надіслане повідомлення до GitHub, і отримано стандартне "ми додамо до нашої внутрішньої відповіді про пошук помилок".
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Відповіді:


79

Оновлено: як зазначає Майкл нижче, це тепер можливо :

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

Клацніть на Editкнопку під заголовком запиту на витягування, щоб відкрити селектор базової гілки.

Анімований приклад того, як змінити базову гілку запиту на витягування.


Стара відповідь

Ви не можете. Просто зробіть новий запит на витяг.


10
прямо до суті, але не суворо вірної - див. цю відповідь.
Том,

7
Посилання на недокументовану (і потенційно ненавмисну) функціональність API - це рецепт смутку.
Ембер

15
Ніхто нічого не говорив про покладання на недокументовану функціональність API. Це питання вимагає вирішення одноразової проблеми, а не постійно підтримуваного поточного рішення. Незважаючи на це, говорити, що "ти не можеш", це просто неправда.
Том,

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 в надії знайти інший спосіб зробити це.
Том

1
Згідно з документами розробника, тип запиту повинен бути bt PATCH. Інша справа, що модифікація головки / бази на даний момент не підтримується. Посилання: developer.github.com/v3/pulls/#update-a-pull-request
Шехар

4
Привіт, Цзянь, як Том згадував у коментарях 13 грудня '12, це (на жаль!) ​​Більше не працює ... це ганьба, адже я міг би це добре використати сьогодні, але на жаль!
pvandenberk

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) Оновіть PR-адресу і перегляньте коміти в qa-4.9, відображені там.


1

Замість того, щоб втратити всі коментарі, пов’язані з PR, до видаленої гілки:

  1. створити гілку знову локально з тим самим ім’ям і тим самим вмістом, до якої належить гілка, яку потрібно об’єднати;
  2. натисніть цю гілку, щоб відтворити віддалену гілку; і потім
  3. знову відкрити PR у відділенні.

Наприклад, у вас є PR для гілки1, який видаляється. Тепер ви хочете об’єднатись, щоб засвоїти та зберегти коментарі до вашого існуючого PR:

  1. майстер перевірки git - -
  2. git pull
  3. git checkout -b branch1
  4. git push
  5. знову відкрийте свій PR у відділенні1
  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не можна редагувати. На даний момент єдиним рішенням, схоже, є рішення Ембер


Що це додає до поточних відповідей?
Лео Лам

Це підтверджує реакцію бурштину, незважаючи на відповідь Тома.
hexaJer

2
Що підтверджує, що ця відповідь взагалі не потрібна. Це нічого не додає до поточних відповідей. У відповіді Тома вже є повідомлення, що він більше не застосовується, і коментарі також вказують на це.
Лео Лам
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.