Як відкрити кілька запитів на витяг на GitHub


139

Коли я відкриваю запит на тягу на GitHub .
Усі зобов’язання з мого останнього запиту та всі нові автоматично додаються до цього запиту .

Я не можу контролювати, які комісії додаються, а які - ні.
Коли я намагаюся відкрити ще один запит на тягу, я отримую помилку "На жаль, вже є запит на витягнення".

Чи є який-небудь простий спосіб відкрити кілька запитів на витяг, не возившись з командним рядком?

Відповіді:


116

Запити на виклик базуються на філії.
Єдиний спосіб відкрити запит на отримання декількох комісій:

  1. Виділіть їх у власну гілку .
  2. Відкрийте звідти запити на виклик.

3
Добре це здорово, я думав, що це тільки з господарем. Тож, що ти маєш на увазі, це те, що я можу створити багато відділень (тобто: функції git flow) та робити запити на тягу для кожної з них ... Йдемо спробувати!
Зіян Джунайдін

8
Щойно я виявив, що філія зберегла історію попередніх комітетів, тому запит на витяг проти потоку все ще включає всі коміти.
вугор ghEEz

2
Привіт @ eel-gheez, ти зрозумів, що з цим робити? Як створити поодинокі піари без зміни інших гілок?
Джонатан Крос

3
Це не вирішує питання: Коли я намагаюся створити PR, обидві гілки (щонайменше по одному комітету) порівнюються. Що я роблю неправильно?
MERose

1
@eelghEEz Вам слід створити нову гілку, наберіть gurry cherry-виберіть усі необхідні для цієї гілки зобов’язання, а потім зробіть запит на тягу з цієї гілки. Дуже важливою конструктивною особливістю git є те, що кожна фіксація залежить від її попередньої фіксації, і введення в git має бути не просто патчем, а як патч, знаючи, який патч застосовувався до цього. Отже, слід створити нову гілку з новими комітетами, чиї відмінності можуть бути все таки однаковими, але зв'язки з попередніми комітетами відрізняються.
МД

11

Найпростіший спосіб, який я знайшов, це зробити за допомогою команди концентратора ( https://github.com/defunkt/hub ).

Із вашої теми теми ("функція" у цьому прикладі), для якої потрібно створити запит на виклик, ви можете просто запустити:

git pull-request

(не забудьте спочатку натиснути свою філію!)

І це відкриє новий запит на пошук на GitHub для "YOUR_USER: особливість".

Якщо ви вже створили проблему в GitHub, ви навіть можете приєднати запит на виклик до існуючої проблеми (те, що ви не можете зробити з веб-інтерфейсу):

$ git pull-request -i 123
[ attached pull request to issue #123 ]

2

Ви насправді МОЖЕТЕ це зробити, не створюючи іншої гілки, але це займе трохи гри.
Ось такі кроки:

  1. Визначте два діапазони фіксування, які ви хочете витягнути. Ось що я буду використовувати для прикладу:
    (інший / головний) A -> B -> C -> D -> E (ваш / master)
    Скажімо, що ви хочете витягнути B і C в одному запиті, і D & Е в іншому.
  2. Зробіть запит на тягу. Нехай ліва сторона ("Основа") буде скоєна A. Для правої сторони ("голова") введіть номер комірки С.
  3. Напишіть опис свого першого запиту.
  4. Зробіть ще один запит. Для основи введіть номер комірки С, а для голови - E (ваш / головний).
  5. Напишіть опис.

Як я бачу, запит на виклик розглядає команду C як точку відгалуження. Або щось.


Ви повинні залишити іншого / master як лівий бік, навіть якщо ви додаєте номер комісії від вашого / master. Також цей метод не дозволяє додавати нові зобов'язання до запиту на об'єднання, якщо потрібні ще якісь зміни.
фріско

Я розмістив відповідь щодо цієї відповіді, на відміну від відомостей про Github, див. Stackoverflow.com/questions/23159860
Марк Беннетт

Я можу бачити, що це створило б два PR, які виглядають правильно, оскільки кожен з них містив саме бажані коміти. Але, якщо бути ясним, чи робить це правильно, коли вони зливаються? Як і в, я можу бачити, що перший PR правильно об'єднав B&C з іншими / master. Але коли 2-й PR об'єднується, то як дізнатися, в яку галузь об'єднатися? (Оскільки він створений на комітеті "C", а не на інших / master) Чи має значення який порядок об'єднання PR-файлів? (імовірно, так)
Джонатан Хартлі

1

Коли ви спочатку переходите до створення запиту на витяг, якщо ви відкриєте дві окремі форми для нового запиту на витягнення, це дозволить вам створити їх до тих пір, поки вони будуть вказані на різні гілки, які потрібно об'єднати. Наприклад, я можу зробити два окремих Запити, один для злиття в головний і інший для злиття в тестовий.


1

Я новачок у Git та GitHub і у мене було те саме питання, що й у OP.

Я знайшов рішення, яке, ймовірно, було недоступне під час проведення ОП.

Ситуація: у вас є три зміни, і ви хочете, щоб кожна була побудована за попередніми, і кожен мав власний запит на тягу (PR).

Проблема: Коли ви створюєте перший PR, який намагається перетворити на головний, кожна річ виглядає добре, але після того, як ви внесете зміни для другого PR, і об'єднайте їх (використовуючи ту саму гілку), всі зміни будуть в одному PR .

Міні-рішення: Створіть нову гілку

git branch mini_change_2
git checkout mini_change_2

Тепер ви натискаєте код на GitHub і створюєте PR, але він за замовчуванням перетягується з mini_change_2 на master, за винятком того, що у master ще немає змін з першого PR, тому він включає всі зміни з PR1 та PR2.

Найкраще рішення: Вкажіть, до якої галузі ви об'єднаєтесь у PR2.

Не приймайте за замовчуванням лише під час створення другого PR, скажіть, що ви збираєтеся тягнути mini_chnage_2 для розробки, це покаже лише зміни в mini_change_2

Тепер створіть нову гілку mini_change_3 та PR, щоб mini_change_3.

Проблема виникає, як тільки ви починаєте їх об’єднувати ... але це вже інша вправа.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.