Git Rebase vs Merge
Ostatnia aktualizacja
Zarówno git merge, jak i git rebase łączą pracę z jednej gałęzi z drugą. git merge wiąże obie historie commitem scalającym i zachowuje dokładnie to, co się wydarzyło. git rebase odtwarza twoje commity jeden po drugim na wierzchu drugiej gałęzi, dając czystą, liniową historię, ale przy okazji przepisuje twoje commity.
Złota zasada: nigdy nie rób rebase commitów, które inni już pobrali. Wypróbuj oba w terminalu online: prawdziwa powłoka w przeglądarce.
Porównanie
| Zachowanie | git merge | git rebase |
|---|---|---|
| Kształt historii | Rozgałęziona, z commitem scalającym | Liniowa |
| Przepisuje commity | Nie | Tak |
| Bezpieczny na wspólnych gałęziach | Tak | Nie |
| Zachowuje dokładną historię | Tak | Nie |
| Łatwo ustalić, kiedy coś zostało scalone | Tak | Trudniej |
Składnia
| Polecenie | Co robi |
|---|---|
git merge feature | Scala feature z bieżącą gałęzią |
git merge --no-ff feature | Zawsze tworzy commit scalający |
git rebase main | Odtwarza commity bieżącej gałęzi na main |
git rebase -i HEAD~3 | Interaktywnie edytuje 3 ostatnie commity |
git rebase --abort | Anuluje trwający rebase |
Najczęstsze pytania o git rebase vs merge
Jaka jest różnica między git rebase a git merge?
git merge łączy dwie gałęzie, tworząc nowy commit scalający, który spina ich historie i zachowuje dokładny zapis tego, co się wydarzyło. git rebase zamiast tego przenosi twoje commity tak, że są odtwarzane na wierzchu innej gałęzi. Daje to prostą historię, ale przepisuje te commity z nowymi hashami. Merge zachowuje historię; rebase przepisuje ją dla porządku.Kiedy używać merge, a kiedy rebase?
main dla czystej historii. Wiele zespołów robi rebase lokalnie, a potem merge do main.Jaka jest złota zasada rebase?
Co powoduje mniej konfliktów: rebase czy merge?
Czy mogę to przećwiczyć online?
git merge oraz git rebase w prawdziwej powłoce w przeglądarce, bez żadnej instalacji. Darmowy interaktywny kurs Git w Coddy też krok po kroku omawia scalanie i rebase.