Middle
Koja je razlika između komandi merge i rebase u sistemu za upravljanje verzijama Git?
sobes.tech АИ
Одговор од АИ
merge spaja grane kreiranjem nove komit sa dva roditelja, čuvajući istoriju promena. rebase pomera komitove jedne grane na drugu, linearnim redosledom organizujući istoriju, ali menja hash-ove komitova.
-
Kod
merge:- Kreira se novi commit spajanja.
- Istorija grana ostaje jasna.
- Mogući su konflikti, koji se rešavaju u novom commitu.
# Primer korišćenja merge git checkout feature-branch git merge main # Rešavanje konflikata, ako ih ima git commit -m "Spojiti main u feature-branch" -
Kod
rebase:- Komitovi se "premeste" i primenjuju na ciljnu granu.
- Istorija postaje linearnija, može izgledati "čistije".
- Hash-ovi premestenih komitova se menjaju.
- Mogući su konflikti za svaki premesteni komit.
- Ne preporučuje se za grane koje su već objavljene i koriste ih drugi programeri, jer menja istoriju.
# Primer korišćenja rebase git checkout feature-branch git rebase main # Rešavanje konflikata, ako ih ima (ponoviti za svaki konfliktni komit) git add . git rebase --continue # ili git rebase --skip za preskakanje komita # ili git rebase --abort za otkazivanje
| Osobina | merge | rebase |
|---|---|---|
| Promena istorije | Čuva istoriju | Menja istoriju (prepisuje) |
| Commit-ovi | Kreira merge commit | Premesta postojeće commit-ove |
| Linearnost istorije | Ne (granaju se grane) | Da (pojednostavljuje istoriju) |
| Pristup | Nije destruktivan | Potencijalno destruktivan |
| Primena | Javni, zajednički grane | Lokalni, lični grane |