Sobes.tech
Middle

Mis vahe on käskudel merge ja rebase Git versioonihaldussüsteemis?

sobes.tech AI

Vastus AI-lt

merge ühendab harud, luues uue commitiga, millel on kaks vanemat, säilitades muudatuste ajaloo. rebase viib ühe haru commitid teise peale, korraldades ajaloo lineaarseks, kuid muutes commitide hash'e.

  • merge ajal:

    • Luues uue ühendamise commit.
    • Harude ajalugu jääb selgeks.
    • Võivad tekkida konfliktid, mis lahendatakse uues commitis.
    # Näide merge kasutamisest
    git checkout feature-branch
    git merge main
    # Konfliktide lahendamine, kui on
    git commit -m "Merge main into feature-branch"
    
  • rebase ajal:

    • Commitid "liigutatakse" ja rakendatakse sihtharu peale.
    • Ajalugu muutub lineaarseks, võib näida "puhtamana".
    • Liigutatud commitide hash'id muutuvad.
    • Võib tekkida konflikt iga liigutatava commit'i puhul.
    • Ei soovitata kasutada avaldatud ja teiste arendajate poolt kasutatavate harude puhul, kuna see muudab ajaloo.
    # rebase näide
    git checkout feature-branch
    git rebase main
    # Konfliktide lahendamine, kui on (iga konfliktse commit'i puhul)
    git add .
    git rebase --continue
    # või git rebase --skip, et vahele jätta commit
    # või git rebase --abort, et tühistada
    
Omadus merge rebase
Ajaloo muutmine Säilitab ajaloo Muudab ajaloo (üleskirjutab)
Commitid Loob merge-commit'i Liigutab olemasolevaid commit'e
Lineaarsus Ei (harud lahkned) Jah (lihtsustab ajalugu)
Lähenemine Mitte destruktiivne Potentsiaalselt destruktiivne
Rakendatavus Avalikud, ühised harud Kohalikud, isiklikud harud