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.
-
mergeajal:- 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" -
rebaseajal:- 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 |