Перебазирование объединенной ветви - PullRequest
0 голосов
/ 01 ноября 2019

У меня есть следующая история коммитов:

* c742f81 (HEAD -> new_feature) x8
* 1869290 x7
* 697809b x6
*   a61e55c x5
|\  
| * da890d6 (master) n6
| * ccc8f5e n5
| * 0095064 n4
| * 002ab13 n3
| * cb93dc4 m4
| * ccaa631 m3
* | 714da58 x4
* | ea11b0d x3
* | 66f1582 x2
* | 3e96100 x1
|/  
* 4f46723 m2
* ce576e8 1

Как видите, у меня есть master ветвь на n6 и new_feature ветвь на x8. Я бегу git rebase -i master new_feature, и я получил это:

pick 3e96100 x1
pick 66f1582 x2
pick ea11b0d x3
pick 714da58 x4
pick 697809b x6
pick 1869290 x7
pick c742f81 x8
Rebase `da890d6..c742f81` onto `714da58` (7 commands)

Теперь, почему я получаю 714da58? Разве это не должно быть da890d6? Кроме того, где находится x5 (Git должен перебазировать коммиты, которые были объединены в x5)?

1 Ответ

1 голос
/ 01 ноября 2019

Что вы сказали Git сделать в этом случае, так это взять new_feature и перебазировать (переиграть) его поверх master. Git показывает вам коммиты, которые будут помещены поверх master.

В этом случае вы видите x1 - x4, потому что они на new_feature, но не на master и вы сказали Git, что хотите воспроизвести все такие коммиты на master. Вы не видите n6, потому что он не будет перебазирован: он уже на мастере. Вам не хватает x5, потому что git rebase по умолчанию не воспроизводит слияния. В этом случае это имеет смысл, потому что слияние не вводит ничего нового.

Однако вы можете воссоздать слияние заново, если хотите, используя опцию --rebase-merges для git rebase;для этого требуется относительно недавняя версия Git.

Вы видите запись 714da58, потому что Git может в конечном итоге использовать reflog в качестве основы для поиска лучшего общего предка;это задокументировано в опции --fork-point. Это не всегда производит "логический" звучащий коммит, но обычно производит лучшую ребазу. Возможно, в какой-то момент ваша ветвь была на 714da58, что также не является общим для обеих ветвей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...