Wyobraźmy sobie, że mamy master
oddział.
Następnie tworzymy newbranch
git checkout -b newbranch
i wykonaj dwa nowe commity do newbranch
: commit1 i commit2
Następnie przełączamy się na master i make cherry-pick
git checkout master
git cherry-pick hash_of_commit1
Patrząc na gitk
to, widzimy, że commit1 i jego wybrana wersja mają różne skróty, więc technicznie są to dwa różne zatwierdzenia.
Wreszcie łączymy się newbranch
w master
:
git merge newbranch
i zobacz, że te dwa zatwierdzenia z różnymi skrótami zostały połączone bez problemów, chociaż implikują, że te same zmiany powinny zostać zastosowane dwukrotnie, więc jedna z nich powinna zawieść.
Czy git naprawdę dokonuje inteligentnej analizy zawartości zatwierdzenia podczas łączenia i decyduje, że zmiany nie powinny być stosowane dwukrotnie lub te zatwierdzenia są wewnętrznie oznaczone jako powiązane ze sobą?
źródło
Po takim połączeniu możesz mieć dwa razy wybitne wybory w historii.
Rozwiązanie, aby temu zapobiec, cytuję z artykułu, który zaleca dla oddziałów ze zduplikowanymi (wybieranymi przez wiśniami) zatwierdzeniami użycie bazy przed scaleniem:
EDYCJA Korekty przypuszczalne przez komentarz Davida Lemon
źródło
---Y---b2'---b4'