Middle
Care este diferența dintre comenzile merge și rebase în sistemul de control al versiunilor Git?
sobes.tech AI
Răspuns de la AI
merge unește ramurile creând un nou commit cu doi părinți, păstrând istoricul modificărilor. rebase mută commit-urile unui ram peste altul, ordonând istoria liniar, dar schimbând hash-urile commit-urilor.
-
La
merge:- Se creează un nou commit de îmbinare.
- Istoricul ramurilor rămâne explicit.
- Pot apărea conflicte, rezolvate în noul commit.
# Exemplu de utilizare merge git checkout ramură-funcționalitate git merge main # Rezolvarea conflictelor, dacă există git commit -m "Îmbinare main în ramură-funcționalitate" -
La
rebase:- Commit-urile "se mută" și se aplică peste ramura țintă.
- Istoria devine liniară, poate părea "mai curată".
- Hash-urile commit-urilor mutate se schimbă.
- Pot apărea conflicte pentru fiecare commit mutat.
- Nu se recomandă pentru ramurile deja publicate și utilizate de alți dezvoltatori, deoarece modifică istoria.
# Exemplu de utilizare rebase git checkout ramură-funcționalitate git rebase main # Rezolvarea conflictelor, dacă există (repetă pentru fiecare commit în conflict) git add . git rebase --continue # sau git rebase --skip pentru a omite commit-ul # sau git rebase --abort pentru a anula
| Caracteristică | merge | rebase |
|---|---|---|
| Schimbare istorie | Păstrează istoria | O schimbă (suprascrie) |
| Commit-uri | Creează un commit de merge | Mută commit-urile existente |
| Liniaritatea istoriei | Nu (ramurile diverg) | Da (simplifică istoria) |
| Abordare | Non-distructiv | Potențial distructiv |
| Aplicabilitate | Ramuri publice și comune | Ramuri locale și personale |