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
course content

Kurssisisältö

Githubin Perusteet

Githubin Perusteet

1. Johdanto GitHubiin
2. Perustoiminnot Etävarastojen Kanssa
3. Edistyneemmät Työnkulut

book
Uudelleensijoittamisen Perusteet

Commitin tekeminen main-haarassa

Aloitetaan tekemällä commit suoraan etäpalvelimen main-haaraan muokkaamalla README.md-tiedostoa etävarastossa. Tämä aiheuttaa sen, että main-haaran ja feature/payment-haaran commit-historiat eroavat toisistaan.

Tässä on tiedostoon lisätty rivi:

Tässä on vastaava commit-viesti:

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 vaihtoehto on kuitenkin käyttää git rebase -komentoa.

Note
Lisätietoa

Rebase tarkoittaa sarjan committien siirtämistä tai yhdistämistä uuteen pohja-commitiin. Tämä tehdään toistamalla muutokset yhdestä haarasta toiseen, 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ämiscommitin, jolloin syntyy kolmisuuntainen yhdistäminen.

Tältä kolmisuuntainen yhdistäminen näyttäisi meidän tapauksessamme, jossa C4 oli viimeisin commit feature/payment-haarassa ennen yhdistämistä:

Kolmitiekäytössä tapahtuvat yhdistämiset voivat kuitenkin vaikeuttaa virheiden jäljittämistä hajautetun, epälineaarisen historian vuoksi. Käyttämällä rebase-toimintoa muutamme committiemme pohjan ja toistamme ne uuden pohjan päälle, jolloin Git voi suorittaa fast-forward-yhdistämisen ja säilyttää lineaarisen historian.

Alla oleva animaatio havainnollistaa, miten rebase voidaan suorittaa tässä tapauksessa (commit-tunnisteet eivät vastaa todellisia tunnisteita):

Note
Huomio

Kun rebase-toimintoa käytetään haaralle, sen historia kirjoitetaan 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 rebasaamisen jälkeen.

question mark

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

Select the correct answer

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

course content

Kurssisisältö

Githubin Perusteet

Githubin Perusteet

1. Johdanto GitHubiin
2. Perustoiminnot Etävarastojen Kanssa
3. Edistyneemmät Työnkulut

book
Uudelleensijoittamisen Perusteet

Commitin tekeminen main-haarassa

Aloitetaan tekemällä commit suoraan etäpalvelimen main-haaraan muokkaamalla README.md-tiedostoa etävarastossa. Tämä aiheuttaa sen, että main-haaran ja feature/payment-haaran commit-historiat eroavat toisistaan.

Tässä on tiedostoon lisätty rivi:

Tässä on vastaava commit-viesti:

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 vaihtoehto on kuitenkin käyttää git rebase -komentoa.

Note
Lisätietoa

Rebase tarkoittaa sarjan committien siirtämistä tai yhdistämistä uuteen pohja-commitiin. Tämä tehdään toistamalla muutokset yhdestä haarasta toiseen, 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ämiscommitin, jolloin syntyy kolmisuuntainen yhdistäminen.

Tältä kolmisuuntainen yhdistäminen näyttäisi meidän tapauksessamme, jossa C4 oli viimeisin commit feature/payment-haarassa ennen yhdistämistä:

Kolmitiekäytössä tapahtuvat yhdistämiset voivat kuitenkin vaikeuttaa virheiden jäljittämistä hajautetun, epälineaarisen historian vuoksi. Käyttämällä rebase-toimintoa muutamme committiemme pohjan ja toistamme ne uuden pohjan päälle, jolloin Git voi suorittaa fast-forward-yhdistämisen ja säilyttää lineaarisen historian.

Alla oleva animaatio havainnollistaa, miten rebase voidaan suorittaa tässä tapauksessa (commit-tunnisteet eivät vastaa todellisia tunnisteita):

Note
Huomio

Kun rebase-toimintoa käytetään haaralle, sen historia kirjoitetaan 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 rebasaamisen jälkeen.

question mark

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

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
some-alt