Weźmy następujący przypadek:
Mam trochę pracy w gałęzi tematycznej i teraz jestem gotowy do powrotu do mastera:
* eb3b733 3 [master] [origin/master]
| * b62cae6 2 [topic]
|/
* 38abeae 1
Wykonuję scalanie z mastera, rozwiązuję konflikty i mam:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | eb3b733 3 [origin/master]
|/
* 38abeae 1
Teraz scalanie zajęło mi trochę czasu, więc ponownie pobieram i zauważam, że zdalna gałąź główna ma nowe zmiany:
* 8101fe3 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
| | * e7affba 4 [origin/master]
| |/
|/|
* | eb3b733 3
|/
* 38abeae 1
Jeśli spróbuję `` git rebase origin / master '' z poziomu głównego, jestem zmuszony ponownie rozwiązać wszystkie konflikty, a także stracę zatwierdzenie scalania:
* d4de423 2 [master]
* e7affba 4 [origin/master]
* eb3b733 3
| * b62cae6 2 [topic]
|/
* 38abeae 1
Czy istnieje czysty sposób na zmianę bazy zatwierdzenia scalenia, aby otrzymać historię taką jak ta, którą pokazuję poniżej?
* 51984c7 Merge branch 'topic' [master]
|\
| * b62cae6 2 [topic]
* | e7affba 4 [origin/master]
* | eb3b733 3
|/
* 38abeae 1
git config --global pull.rebase preserve
aby zawsze zachować fuzję, zobowiązuje się podczas rebase
git --rebase-merges
ostatecznie zastąpi stary git --preserve-merges
. Zobacz, co dokładnie robi Git „ rebase --preserve-merges
” (i dlaczego?)
--preserve-merges
jest przestarzałe. Użyjgit rebase --rebase-merges origin/master
git rebase --preserve-merges origin/master