Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Uudelleensijoittamisen Perusteet | Edistyneemmät Työnkulut
Githubin Perusteet

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.

Note
Lisätietoa

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ä:

Kolmitieyhdistys

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):

uudelleenasetus
Note
Huomio

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.

question mark

Mikä on git rebase-komennon pääasiallinen tarkoitus verrattuna git merge-komentoon?

Valitse oikea vastaus

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 3. Luku 4
some-alt