Aby przeprowadzić scalenie, Git musi dowiedzieć się, co dokładnie stało się w dwóch gałęziach od wspólnego przodka (A1
). Jak już powiedziałeś poprawnie, Git przechowuje migawki zatwierdzeń/drzew, więc aby uzyskać prawdziwy zestaw zmian, musi porównać A2
z A1
i B1
z A1
, a następnie połączyć te indywidualne zestawy zmian.
To samo dzieje się w reorganizacji. Aby zastosować zestaw zmian A2
na B1
, najpierw musimy obliczyć ten zestaw zmian z różnic między A1
i A2
. A następnie możemy zastosować to do B1
. Możesz myśleć o rebase jako coś podobnego do automatycznego generowania plików łatek. Najpierw generuje wszystkie pliki łatek ze starego oddziału i stosuje je do bieżącego HEAD.
Potrzebujemy więc wszystkich tych trzech zobowiązań, aby właściwie obliczyć różnice, ponieważ nie możemy dowiedzieć się, co się stało w zatwierdzeniu, patrząc na to zatwierdzenie.
dziękuję, to właśnie próbowałem pokazać za pomocą mojego pytania. – worker1138