Документация bitbucket гласит:
Слияние без ускоренной перемотки - это слияние, в котором основная ветвь имела промежуточные изменения между точкой ветвления и слиянием обратно кмастер.В этом случае пользователь может смоделировать ускоренную перемотку вперед путем перебазирования, а не слияния.Перебазировка работает путем отказа от некоторых коммитов и создания новых.
Допустим, у нас есть слияние без ускоренной перемотки вперед:
- o - o - o - H - A - B - C <-- master (HEAD)
\
P - Q - R <-- origin/master
В соответствии с приведенной выше цитатой из документации bitbucketПеребазировка может имитировать ускоренную перемотку вперед.Однако, выполнив команды:
git checkout master
git pull --rebase
git rebase
, который вызывается git pull --rebase
, просто получает коммиты в мастере ветки, который был извлечен, и добавляет их в новую базу, которая является origin / master, в результате чего:
- o - o - o - H - P - Q - R - A' - B' - C' <-- master (HEAD)
|
<-- origin/master
Быстрая перемотка вперед (когда это возможно) быстрой перемотки вперед (т. е. перемещение во времени) указателя главной ветви, указывающего на последний коммит ветви, которая должна быть объединена.Тем не менее, как показано на 2-м коммите, перебазирование приводит к тому, что HEAD имеет значение C'
, что не совпадает с ускоренной перемоткой вперед, потому что, как показано на 2-м коммите, перебазирование создает 3 новых коммита A'
, B'
и * 1023.* вместо быстрой пересылки указателя главной ветви, чтобы соответствовать коммитам, которые были объединены (быстрая перемотка заставила бы HEAD быть в R
).
Так как git rebase
может имитировать ускоренную пересылку при слиянии без ускоренной перемотки или это утверждение из документации по битовой корзине неверно?