У меня более длинная версия этого ответа в Запрос на объединение в git заставляет ветвь вверх по течению идти вперед от начала , но здесь это сокращенный эквивалент. Все предполагают, что вы находитесь на базовой ветви, то есть git checkout <em>branch</em>
. сообщение ниже равно Merge pull request #<em>number</em> from <em>repository</em>
, а hash
автоматически вычисляется из запроса на извлечение.
Создать коммит слияния
git merge --no-ff -m <em>message hash</em>
Сквош и слияние
git merge --no-commit --squash <em>hash</em> && git commit -m <em>message</em>
Перебазировать и объединить
git rebase --force-rebase <em>hash</em>
(Обратите внимание, что rebase-and-merge не будет работать, если возникнут конфликты слияния. Мне не ясно, проверяет ли система GitHub это с --merge
или без него, или каким-либо другим способом полностью. Запрос на извлечение уже проверил конфликты слияния с git merge
с или без --squash
; refs/pull/head/<em>number</em>
всегда существует, но refs/pull/merge/<em>number</em>
существует, только если таких конфликтов нет, я думаю. Они - GitHub - также отслеживают, «Базовая ветвь», используемая для создания запроса на извлечение, была / является актуальной, но не совсем ясно, как именно они это делают.)