Потяните запрос на 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
.