Junior — Middle
Jak odróżnić polecenia git rebase i git merge i jakie są ich główne różnice?
sobes.tech AI
Odpowiedź od AI
git merge i git rebase to dwa różne polecenia służące do integracji zmian z jednej gałęzi do drugiej, ale działają na różne sposoby.
-
git merge tworzy nowy commit scalający, który łączy historię obu gałęzi, zachowując ich równoległy rozwój. Historia pozostaje rozgałęziona, co wyraźnie pokazuje, kiedy i jak doszło do scalania.
-
git rebase "przepisuje" historię, przesuwając Twoje lokalne commity na inną gałąź, tworząc liniową historię bez commitów scalających. To upraszcza historię, ale zmienia hasze commitów.
Główne różnice:
- Merge zachowuje historię rozgałęzioną, rebase tworzy historię liniową.
- Po rebase należy uważać na publiczne gałęzie, ponieważ historia jest przepisywana.
- Merge jest prostszy i bezpieczniejszy w pracy zespołowej.
Przykład:
# merge
git checkout feature
git merge main
# rebase
git checkout feature
git rebase main
W pierwszym przypadku pojawi się commit scalający, w drugim — Twoje commity zostaną "przesunięte" na szczyt gałęzi main.