Потяните запрос на github - покажите, что коммиты переустанавливаются от мастера

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

Я создал ветку, немного поработал над ней, а также мало работал над мастером.

Затем я перепутал ветку с хозяином. Теперь я хочу сделать запрос на перенос.

Однако в GitHub запрос на вытягивание показывает все коммиты, которые произошли между тем, когда я впервые сделал ветку, и теперь - коммиты, которые я сделал в этой ветки признаков, и фиксации, которые находятся на главном сервере, который произошел между ними.

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

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

Ответ 1

У меня была такая же проблема:

Если у нас есть ветвь foo, разветвленная от master, которая уже помещена в origin, а на обоих ветвях были сделаны изменения, то после слияния/перезагрузки я получал изменения от master в Pull Request дифф.

Я решил это, выполнив git fetch сначала, обновив локальную ветвь master, изменив локальную ветвь на foo, а затем выполнив команды:

git rebase master

git push -f origin foo:foo

Это приводит к удаленной ветке, а затем PR diff содержит только правильные изменения, точно так же, как ветвь будет создана на основе недавнего master.

Ответ 2

Вы, должно быть, сделали что-то не так. В результате rebase вы должны иметь только уникальные изменения после последнего фиксации в master, и ваша ветка должна быть готова к быстрой перемотке вперед.

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

Повторите попытку. Если вы правильно свалили ранее, это должно быть NO-OP. Оформите свою ветку и попробуйте снова переустановить поверх мастера, например:

git checkout yourbranch
git rebase master

Это должно печатать Current branch will-have-rebased is up to date., и после того, как вы нажмете ветку на GitHub, вы сможете создать запрос на перенос, где появятся только уникальные фиксации. Я не понимаю, почему нет.

Важно: помните, что если вы перетащили свою ветвь перед перезагрузкой, то Git откажется снова нажать после перезагрузки. Это потому, что в целом вам не следует переписывать историю публичных веток, и все руководства по переустановке объясняют это. Если вы хотите все равно нажать на ветку, переписывая свою историю на github, добавьте флаг --force.