Возьмите следующий случай:
У меня есть работа в ветке тем, и теперь я готов вернуться к мастеру:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Я выполняю слияние с мастером, разрешаю конфликты и теперь у меня есть:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Теперь слияние заняло у меня некоторое время, поэтому я сделал еще одну выборку и заметил, что в удаленной главной ветке появились новые изменения:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Если я пытаюсь «git rebase origin / master» от master, я вынужден снова разрешать все конфликты и также теряю коммит слияния:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
Есть ли чистый способ перебазировать коммит слияния, чтобы я получил историю, подобную той, что я показываю ниже?
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
всегда сохранять коммиты слияния во время
git --rebase-merges
конечном итоге заменит старый git --preserve-merges
. Посмотрите, что именно Git's « rebase --preserve-merges
» делает (и почему?)
--preserve-merges
устарела. Использованиеgit rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master