Sobes.tech
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