Як оновити запит на витяг з роздвоєного репо?


592

Тому я спершу відправив репо, а потім взяв на себе зобов’язання з цим роздвоєним репо. Потім я відкрив запит на тягу. У запиті на виклик перелічені всі зміни, які я хотів.

Переглянувши мій запит на витяг, відбувся ряд змін, які власник РЕПО хотів, щоб я вніс ще до того, як прийняв його. Я вніс ці зміни у свою вилку, тепер як я оновлюю запит на витяг із цими змінами (чи це не так, як я повинен це обробити)?



7
@PaulDraper Я не погоджуюся, що користувач вже знає і представляє різні методи оновлення запиту на виклик, і запитати, що найкраще. Я, з іншого боку, не знав жодних методів і питав про їх існування. Як показує популярність цього питання, це стосується багатьох інших користувачів.
stevebot

6
Я думаю, що популярність пов’язана з тим, що (1) це справді хороший, поширений питання і (2) деякі користувачі звиваються тут, а не там. Якби він був спочатку визначений як дублікат, вони знайшли б інше питання таким самим і відповіли б на їх запитання.
Пол Дрейпер

Відповіді:


584

Ви зробили це правильно. Запит на витяг автоматично оновиться. Процес:

  1. Відкрити запит на потяг
  2. Внесіть зміни на основі зворотного зв’язку у вашому місцевому РЕПО
  3. Перейдіть до відповідної гілки вилки

Запит на виклик автоматично додасть нові коміти в нижній частині дискусії про запит на тягнення (тобто він уже є, прокрутіть вниз! )


73
приємно! Я перевіряв всюди, але фактичний запит на тягу. її магія, чорна магія, я не буду сумніватися в цьому.
stevebot

57
Це хороший привід для роботи у філіях. Якщо, наприклад, ви завжди натискали на майстер, ви можете ненавмисно додати до попереднього запиту на витяг.
Брайан Пан

3
Схоже, це вже не так, хоча це було раніше. Ось приклад запиту на витяг, який я зробив ( github.com/toopay/bootstrap-markdown/pull/167 ) порівняно з самою гілкою ( github.com/mhuggins/bootstrap-markdown/commits/… ). Цікаво, як це зробити більше, оскільки процес, здається, змінився.
Метт Хаггінс

1
GitHub насправді говорить вам: "Додайте більше комісій, натиснувши на гілку SolveWorldHunger у ChangeTheWorldProject."
flow2k

1
Те саме тут - я не бачу змін від forked repo в головному сховищі. Схоже, помилка GitHub
andrfas

77

Оновити запит на притягнення в GitHub так само просто, як і здійснити потрібні зміни в існуючу гілку (яка використовувалася із запитом на тягнення), але часто також хочеться розбити зміни в одну комісію:

git checkout yourbranch
git rebase -i origin/master

# Edit command names accordingly
  pick   1fc6c95 My pull request
  squash 6b2481b Hack hack - will be discarded
  squash dd1475d Also discarded

git push -f origin yourbranch

... і тепер запит на витяг містить лише одну фіксацію.


Пов’язані посилання про перезавантаження:


2
Резюме для згадування бази даних. Це допомагає виключати шум в історії ревізій.
stevebot

+11 (так, я мав на увазі, що ключове слово повторюється. Використання git rebase / pick / squash чудово працює.
javadba

11
Недоліком цього підходу є те, що ви видаляєте попереднє зобов’язання. Це означає, що якщо у запиті на виклик буде зроблено коментар, вони будуть втрачені та зникнуть разом із початковою командою.
мінет

У Bitbucket ви можете бачити коментарі до "попередніх версій" файлу у запиті на виклик. Хоча було б непогано побачити щось на кшталт Герріта, де ви виконуєте виправлення патчів і можете побачити всю історію з коментарями. Це забезпечує чітку історію git та простежуваність, коли ви можете повернутися назад і побачити повну дискусію навколо будь-якого комітету.
Кохання

35

Просто натисніть на гілку, на яку посилається запит на виклик. Поки запит на виклик все ще відкритий, він повинен автоматично оновлюватися з будь-якими доданими зобов’язаннями.


14

Я зробив це за допомогою наступних кроків:

  1. git reset --hard <commit key of the pull request>
  2. Чи змінилися в коді я хотів зробити
  3. git add
  4. git commit --amend
  5. git push -f origin <name of the remote branch of pull request>

1
Дуже добре, я віддаю перевагу такому підходу! GitHub навіть приховує (але зберігає) застарілі розділи коду та відповідні коментарі. Добре пам’ятати, що якщо запит на витяг містить кілька комітетів, а той, який потребує виправлення, не знаходиться на кінчику гілки, "git reset --hard" відкине всі зміни, здійснені після вказаного ідентифікатора. У мене була резервна копія, яку я застосував вручну. Не дуже зручно, якщо є кілька додаткових
фіксацій,

3

Якщо ви використовуєте GitHub у Windows :

  1. Внесіть зміни на місцевому рівні.
  2. Відкрийте GitHub, переключіться на локальні сховища, сховище подвійного клацання.
  3. Переключіть гілку (біля верхньої частини вікна) на гілку, з якої ви створили запит на витяг (тобто гілку на стороні вилки порівняння)
  4. Потрібно побачити опцію ввести коментар праворуч на право і внести зміни до місцевого репо.
  5. Клацніть на синхронізації вгорі, що, крім іншого, відсуває ваш комітет від локального до віддаленого розвилка на GitHub.
  6. Запит на потяг буде оновлено автоматично додатковими зобов’язаннями. Це тому, що витягнутий запит являє собою відмінність у відділенні вашого вилки. Якщо ви перейдете на сторінку запиту на виклик (ту, де ви та інші зможете прокоментувати ваш запит на притягнення), тоді на вкладці «Коміти» мають бути додаткові зобов’язання.

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

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