Uudelleensijoittamisen Perusteet
Pyyhkäise näyttääksesi valikon
Commitin tekeminen main-haarassa
Aloitetaan tekemällä commit suoraan etäpalvelimen main-haaraan muokkaamalla README.md-tiedostoa etärepositoryssa. Tämä aiheuttaa sen, että main-haara ja feature/payment-haara saavat eriytyvän commit-historian.
Tässä on tiedostoon lisätty rivi:
New feature will soon be integrated.
Tässä on vastaava commit-viesti:
Add information about new feature in README.md
Uudelleenasemoinnin ymmärtäminen
Kuten mainittiin edellisessä luvussa, kun feature-haara on tarkistettu ja testattu, se voidaan ja tulisi yhdistää takaisin main-haaraan. Tähän asti olemme käyttäneet tähän tarkoitukseen vain git merge -komentoa. Toinen tapa on kuitenkin käyttää git rebase -komentoa.
Rebase tarkoittaa sarjan committien siirtämistä tai yhdistämistä uuteen pohjakommittiin. Tämä tehdään toistamalla muutokset yhdeltä haaralta toiselle, jolloin syntyy lineaarinen commit-historia.
Kun luomme haaran, Git seuraa uusinta committia molemmissa haaroissa. Jos vain toisessa haarassa on uusia muutoksia, Git voi siirtyä eteenpäin ja ottaa muutokset käyttöön. Jos molemmissa haaroissa on uusia muutoksia, Git luo uuden yhdistämiskommitin, jolloin syntyy kolmitieyhdistäminen.
Tältä kolmitieyhdistäminen näyttäisi meidän tapauksessamme, jossa C4 oli viimeisin commit feature/payment-haarassa ennen yhdistämistä:
Kolmitieyhdistykset voivat kuitenkin vaikeuttaa virheenkorjausta jakautuneen, epälineaarisen historian vuoksi. Uudelleenasettamalla pohjan (rebase) muutamme committien pohjan ja toistamme ne uuden pohjan päälle, jolloin Git voi suorittaa fast-forward-yhdistyksen ja säilyttää lineaarisen historian.
Alla oleva animaatio havainnollistaa, miten uudelleenasetus (rebase) voidaan suorittaa tässä tapauksessa (commit-tunnisteet eivät vastaa todellisia tunnisteita):
Kun teet rebase-toiminnon haaralle, kirjoitat sen historian uudelleen. Tämä tarkoittaa, että vanhat commitit korvataan uusilla, joilla on eri tunnisteet (hash-summat), koska ne perustuvat eri koodin tilannekuviin. Kuten yllä olevassa animaatiossa näkyy, feature/payment-haaran commitin tunniste muuttui rebase-toiminnon jälkeen.
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme