Слияние вверх по течению git изменяется с ожидающими запросами на тяну

У меня все время возникают проблемы с git в общем рабочем процессе GitHub.

  • я fork a repo
  • Я совершаю некоторые изменения.
  • Я делаю запрос на перенос вверх по репо
  • Twidd thumbs, когда разработчик upstream находится на моем запросе на pull.
  • Разработчик Upstream делает изменения в своем репо
  • Они смотрят на ваш запрос на тягу, но из-за изменений в их дереве оно больше не будет применяться чисто, поэтому они просят вас обновить запрос на перенос.
  • Я извлекаю и объединяю изменения из восходящего потока в свое репо, разрешаю конфликты, фиксирует изменения.
  • Я переустанавливаю в своем запросе на тягу, чтобы сделать его аккуратным и аккуратным.

Здесь возникает проблема: мой запрос на перенос теперь содержит все изменения, произошедшие между шагами 2 и 7, включая собственные изменения разработчика. В недавнем примере это расширило запрос на растяжение по 10 строк на более чем 12 000 строк.

Как мне повторно применить мои первоначальные коммиты на более позднюю версию восходящего репо без внесения изменений в мой запрос на тягу?

Ответ 1

Измените это

7) Я извлекаю и объединяю изменения из восходящего потока в свое репо, разрешаю конфликты, фиксирует изменения.

8) Я переустанавливаю фиксацию в моем запросе на тягу, чтобы сделать ее опрятной и аккуратной.

к

Я переустанавливаю свое репо на верхний уровень, делая его аккуратным и аккуратным.

Предполагая, что вы разветкили эту ветку с восходящего/ведущего:

git rebase -i upstream/master

Это приведет к повторному воспроизведению ваших коммитов поверх текущего мастера. Конечный результат, после того, как вы разрешите какие-либо конфликты, будет выглядеть так, как будто вы раздробили прямо сейчас.

Ответ 2

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

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

Если вы хотите включить новые изменения из восходящего потока, вы можете получить их и пересоздать ветвь темы.

При создании запроса на перенос в github вы можете выбрать эту ветку, которая гарантирует, что правильные фиксации будут втянуты.

Каждый раз, когда вы нажимаете эту ветку (даже push -f), вы автоматически обновляете запрос на перенос.