Rebase vai merge
Vertailkaa rebase- ja merge-toimintoja ja oppikaa, milloin kumpaakin kannattaa käyttää selkeän ja lineaarisen historian säilyttämiseksi.
Rebase vai merge on ilmainen Git- ja GitHub-ammattilaisen työnkulku-oppitunti CoddyKitissä. Tämä on oppitunti 3/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Git- ja GitHub-ammattilaisen työnkulku-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.
Merge vai rebase? Valinta
Gitillä työskennellessänne huomaatte usein, että haaranne erkanee toisesta haarasta, esimerkiksi feature-haara haarasta main.
Miten nämä muutokset yhdistetään? Git tarjoaa kaksi pääasiallista strategiaa: mergen ja rebasen. Molemmilla muutokset voidaan integroida, mutta ne toimivat perustavanlaatuisesti eri tavoin ja tuottavat erilaisen projektihistorian.
Merge: historioiden yhdistäminen
Merge on Gitin oletustapa integroida muutoksia. Kun yhdistätte yhden haaran toiseen, Git ottaa lähdehaaran sisällön ja yhdistää sen kohdehaaraan.
Mergen keskeinen piirre on uuden merge-comitin luominen. Tällä commitilla on kaksi kanta-committia, mikä osoittaa selvästi kahden eriytyneen historian yhdistämisen. Se säilyttää molempien haarojen historian täsmälleen ennallaan.
Git-mergen suorittaminen
Tarkastellaan yksinkertaista mergeä. Luomme feature-haaran, lisäämme commitin ja yhdistämme sen sitten takaisin main-haaraan.
git init my_merge_project
cd my_merge_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"
git branch feature
git checkout feature
echo "Feature A" >> feature.txt
git add .
git commit -m "Add feature A"
git checkout main
echo "Main update" >> main.txt
git add .
git commit -m "Update main"
git merge feature
git log --oneline --graphMerge: hyödyt ja haitat
Merge on suoraviivainen ja turvallinen jaetuissa haaroissa, mutta se voi tehdä historiasta ”sotkuisen”.
- Hyödyt:
- Säilyttää commitien tarkan historian.
- Ei-tuhoava: olemassa olevia committeja ei kirjoiteta uudelleen.
- Helppo käyttää ja ymmärtää.
- Haitat:
- Historiaan voi syntyä paljon merge-committeja ja siitä voi tulla ”meluisa”.
- Kaaviosta voi tulla monimutkainen, kun siihen yhdistetään useita haaroja.
Rebase: historian kirjoittaminen uudelleen
Rebase on mergelle vaihtoehtoinen tapa integroida muutoksia. Siinä commit-joukko siirretään tai yhdistetään uuden kanta-comitin päälle. Merge-comitin luomisen sijaan projektin historia kirjoitetaan uudelleen.
Käytännössä ominaisuushaaran commitit ”toistetaan” kohdehaaran uusimman commitin päälle, jolloin näyttää siltä, että työ olisi aloitettu siitä kohdasta. Tuloksena on lineaarinen historia ilman ylimääräisiä merge-committeja.
Git-rebasen suorittaminen
Kokeillaan nyt samaa tilannetta rebasella. Teemme rebasen siirtämällä feature-haaran haaran main päälle.
Huomatkaa, kuinka feature-haaran commit otetaan uudelleen käyttöön haaran main uusimman commitin päällä, minkä jälkeen fast-forward-merge siirtää main-haaran osoittamaan siihen.
git init my_rebase_project
cd my_rebase_project
echo "Initial content" > file.txt
git add .
git commit -m "Initial commit"
git branch feature
git checkout feature
echo "Feature B" >> feature.txt
git add .
git commit -m "Add feature B"
git checkout main
echo "Main update 2" >> main.txt
git add .
git commit -m "Update main 2"
git checkout feature
git rebase main
git checkout main
git merge feature
git log --oneline --graphRebase: hyödyt ja haitat
Rebase tuottaa siistin historian, mutta jaettujen haarojen yhteydessä siihen liittyy tärkeä varoitus.
- Hyödyt:
- Tuottaa siistin ja lineaarisen projektihistorian.
- Commit-historiaa on helpompi tarkastella ja ymmärtää.
- Committeja voi siistiä (yhdistää tai järjestää uudelleen) ennen integrointia.
- Haitat:
- Kirjoittaa commit-historian uudelleen.
- Voi olla vaarallinen, jos sitä käytetään committeihin, jotka on jo pushattu jaettuun (julkiseen) etärepositorioon.
Merge vai rebase: vertailu
Tässä on nopea yhteenveto keskeisistä eroista:
- Merge:
- Luo uuden merge-comitin.
- Säilyttää koko historian tarkasti.
- Ei-tuhoava.
- Kaaviosta voi tulla monimutkainen.
- Rebase:
- Kirjoittaa historian uudelleen eikä luo merge-comitia.
- Tuottaa lineaarisen historian.
- Tuhoava (muuttaa commit-tunnisteita).
- Kaavio on hyvin selkeä.
Strategian valitseminen
Milloin kumpaakin siis kannattaa käyttää?
- Käyttäkää mergeä, kun:
- Työskentelette julkisissa tai jaetuissa haaroissa (esimerkiksi
main,develop). - Haluatte säilyttää projektin tarkan historian.
- Haluatte näyttää selvästi, milloin eriytyneet historiat yhdistettiin.
- Käyttäkää rebasea, kun:
- Työskentelette yksityisellä ominaisuushaarallanne ennen sen pushaamista.
- Haluatte siistin ja lineaarisen historian.
- Haluatte siistiä ominaisuushaaran committeja (esimerkiksi yhdistää tai järjestää niitä uudelleen) ennen integrointia.
Kultainen sääntö: älkää koskaan tehkö rebasea committeille, jotka on jo pushattu jaettuun etärepositorioon! Jaetun historian rebase voi aiheuttaa yhteistyökumppaneille suuria ongelmia.
Pikatarkistus: merge vai rebase?
Tarkastellaan Gitin kahden pääasiallisen integrointistrategian ominaisuuksia.
Kertaus: merge vai rebase
Tässä oppitunnissa tarkastelimme Gitin kahta perusmenetelmää muutosten integrointiin: mergeä ja rebasea.
- Merge yhdistää historiat uuden merge-comitin avulla ja säilyttää kaikki alkuperäiset commitit.
- Rebase kirjoittaa historian uudelleen ja luo lineaarisen etenemisen siirtämällä committeja.
Valitkaa menetelmä viisaasti tiimin työnkulun perusteella ja muistakaa kultainen sääntö: älkää koskaan tehkö rebasea julkiselle historialle! Tämä ymmärrys on olennaisen tärkeä siistin ja yhteistyöhön sopivan Git-työnkulun ylläpitämisessä.
Opi Git- ja GitHub-ammattilaisen työnkulku tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 12
- Oppitunnit
- 48
Usein kysytyt kysymykset
Onko oppitunti ”Rebase vai merge” ilmainen?
Kyllä – oppitunnin ”Rebase vai merge” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Git- ja GitHub-ammattilaisen työnkulku-kurssin, päivitä CoddyKit PROhon. Git- ja GitHub-ammattilaisen työnkulku-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Rebase vai merge”?
Vertailkaa rebase- ja merge-toimintoja ja oppikaa, milloin kumpaakin kannattaa käyttää selkeän ja lineaarisen historian säilyttämiseksi. Harjoittelet Git- ja GitHub-ammattilaisen työnkulku-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Git- ja GitHub-ammattilaisen työnkulku-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Git- ja GitHub-ammattilaisen työnkulku-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 3/4.
Kuinka kauan ”Rebase vai merge”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Git- ja GitHub-ammattilaisen työnkulku-oppitunnilla?
Kyllä. Jokainen Git- ja GitHub-ammattilaisen työnkulku-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.