Я пытаюсь просмотреть запрос на перенос на GitHub в ветку, которая не является ведущей. Целевая ветка находилась за master, и запрос на вытягивание показал коммиты от master, поэтому я объединил master и отправил его на GitHub, но коммиты и различия для них все еще появляются в запросе на вытягивание после обновления. Я дважды проверил, что ветка на GitHub имеет коммиты от мастера. Почему они все еще появляются в запросе на перенос?
Я также проверил запрос на перенос локально, и он показывает только неслитые коммиты.
Ответы:
Похоже, что Pull Request не отслеживает изменения в целевой ветке (я связался со службой поддержки GitHub и 18 ноября 2014 года получил ответ, в котором говорилось, что это сделано намеренно).
Однако вы можете заставить его показать вам обновленные изменения, выполнив следующие действия:
Заменить
githuburl
,org
,repo
,targetbranch
, иcurrentbranch
в случае необходимости.Или, как указал Хексспрайт в своем ответе, вы также можете принудительно обновить его, щелкнув EditPR и временно изменив базу на другую ветку и обратно. Это вызывает предупреждение:
И оставим в журнале PR две записи :
источник
Вот хорошее решение. Используйте
Edit
кнопку при просмотре PR в GitHub, чтобы изменить базовую ветку на что-то другое, кромеmaster
. Затем переключите его обратно на,master
и теперь он будет правильно отображать только изменения из самых последних коммитов.источник
Подводя итог, GitHub не обновляет историю коммитов автоматически в запросах на вытягивание. Самые простые решения:
Решение 1. Rebase
Предположим, вы хотите слиться
master
сfeature-01
:Если вы работаете над вилкой, вам может потребоваться заменить ее
origin
наupstream
. См. Как мне обновить разветвленный репозиторий GitHub? чтобы узнать больше об отслеживании удаленных веток исходного репозитория.Решение 2. Создайте новый запрос на перенос
Предположим, вы хотите объединить вступление
master
изfeature-01
:Теперь откройте запрос на
feature-01-rebased
включение и закройте запрос дляfeature-01
.источник
Вам необходимо добавить в свой
~/.gitconfig
файл следующее:Это автоматически приведет к тому же, что показывает этот ответ .
Я получил это отсюда .
источник
Для всех, кто сталкивался с этим и был сбит с толку поведением GitHub Pull Request, основная причина заключается в том, что PR - это различие кончика исходной ветки с общим предком исходной ветки и целевой ветки. Поэтому он покажет все изменения в исходной ветке до общего предка и не будет принимать во внимание какие-либо изменения, которые могли произойти в целевой ветке.
Дополнительная информация доступна здесь: https://developer.atlassian.com/blog/2015/01/a-better-pull-request/
Различия на основе общих предков кажутся опасными. Я бы хотел, чтобы у GitHub была возможность сделать более стандартный PR на основе трехстороннего слияния.
источник
Один из способов исправить это -
git rebase targetbranch
в том пиаре. Затемgit push --force targetbranch
Github покажет правильные коммиты и diff. Будьте осторожны с этим, если не знаете, что делаете. Возможно, сначала проверьте тестовую ветку, чтобы выполнить перебазирование, а затемgit diff targetbranch
убедиться, что это все еще то, что вы хотите.источник
Это происходит с GitHub, когда вы объединяете коммиты из целевой ветки.
Я использовал сквош и слияние с Github в качестве стратегии слияния по умолчанию, включая слияния из целевой ветки. Это вводит новую фиксацию, и GitHub не распознает, что эта сжатая фиксация такая же, как и уже существующие в мастере (но с другими хэшами). Git обрабатывает это правильно, но вы снова видите все изменения в GitHub, что затрудняет просмотр. Решение состоит в том, чтобы выполнять регулярное слияние этих подтянутых в восходящем потоке коммитов вместо сквоша и слияния. Когда вы хотите объединить другую ветвь в свою в качестве зависимости
git merge --squash
и отменить эту единственную фиксацию, прежде чем вытащить ее из мастера, как только эта другая ветка действительно сделала ее мастером.РЕДАКТИРОВАТЬ: другое решение - переустановить и принудительно нажать. Чистая, но переписанная история
источник
Я не совсем уверен в теории, стоящей за этим. Но я получал это несколько раз и смог исправить это, выполнив следующие действия.
Это приведет к извлечению и объединению изменений из вашей исходной главной ветки репо (если вы указали на это)
Затем вы принудительно отправляете свои изменения в свой клонированный репозиторий github (цель)
Это гарантирует, что ваш клон github и ваше родительское репо находятся на одном уровне фиксации github, и вы не увидите никаких ненужных изменений в ветках.
источник
Попробуйте выполнить следующие команды одну за другой.
источник
Отказобезопасный подход, если вы слишком беспокоитесь о том, чтобы что-то испортить: перейдите к файлу и вручную удалите изменения, затем сквошируйте с помощью последней фиксации, используя
У меня нет конфликтов, все готово!
источник