Middle
Mi a különbség a merge és rebase parancsok között a Git verziókezelő rendszerben?
sobes.tech MI
Válasz az MI-től
A merge két ágat egyesít úgy, hogy létrehoz egy új commitot két szülővel, megőrizve a változások történetét. A rebase egy ág commitjait egy másik fölé helyezi át, lineárissá téve a történelmet, de megváltoztatva a commitok hash-ét.
-
A
mergeesetén:- Egy új egyesítési commit jön létre.
- Az ágak története nyilvánvaló marad.
- Konfliktusok léphetnek fel, melyeket az új commitban oldanak meg.
# Merge példa git checkout feature-branch git merge main # Konfliktusok megoldása, ha vannak git commit -m "main összevonása feature-branch-be" -
A
rebaseesetén:- A commitok "átkerülnek" és az célág fölé kerülnek.
- A történet lineáris lesz, talán "tisztabb" kinézetű.
- A költözött commitok hash-értékei megváltoznak.
- Konfliktus léphet fel minden költözött commitnál.
- Nem ajánlott már publikált és más fejlesztők által használt ágakhoz, mivel megváltoztatja a történelmet.
# rebase példa git checkout feature-branch git rebase main # Konfliktusok megoldása, ha vannak (ismételd minden konfliktusos commitnál) git add . git rebase --continue # vagy git rebase --skip a commit kihagyásához # vagy git rebase --abort a megszakításhoz
| Jellemző | merge | rebase |
|---|---|---|
| Történet módosítása | Megőrzi a történelmet | Módosítja a történelmet (felülírja) |
| Commitok | Létrehoz egy merge-commit | Áthelyezi a meglévő commitokat |
| Lineáris történet | Nem (ágak elágaznak) | Igen (egyszerűsíti a történelmet) |
| Megközelítés | Nem destruktív | Potenciálisan destruktív |
| Alkalmazhatóság | Nyilvános, közös ágak | Helyi, személyes ágak |