Rekisteröitymätön käyttäjä
Ero sivun ”Git” versioiden välillä
Siirry navigaatioon
Siirry hakuun
Sitaattilainan (esim "commit") taivuttamisessa loppukonsonantti ei kahdennu
(→Git yhteistyövälineenä: git pull) |
(Sitaattilainan (esim "commit") taivuttamisessa loppukonsonantti ei kahdennu) |
||
Rivi 13: | Rivi 13: | ||
Gitissä eri kehityshaarojen käyttäminen (esimerkiksi luominen, vertailu ja yhdistäminen) on helppoa ja ideana on, että isommista muutoksista luodaan oma kehityshaaransa. Kehityshaaroja voidaan muokata toisistaan riippumatta, ja lopulta esimerkiksi vakaasta kehityshaarasta haarautetussa epävakaassa kehityshaarassa tehty työ voidaan liittää takaisin vakaaseen haaraan työn valmistuttua. | Gitissä eri kehityshaarojen käyttäminen (esimerkiksi luominen, vertailu ja yhdistäminen) on helppoa ja ideana on, että isommista muutoksista luodaan oma kehityshaaransa. Kehityshaaroja voidaan muokata toisistaan riippumatta, ja lopulta esimerkiksi vakaasta kehityshaarasta haarautetussa epävakaassa kehityshaarassa tehty työ voidaan liittää takaisin vakaaseen haaraan työn valmistuttua. | ||
Kehitystyö tapahtuu käytännössä viemällä muutoksia versionhallintaan eli tekemällä ns. '' | Kehitystyö tapahtuu käytännössä viemällä muutoksia versionhallintaan eli tekemällä ns. ''commiteja'' (engl. ''commit'', vakiintunutta suomennosta ei ole). Gitissä jokaiselle commitille luodaan yksilöllinen [[SHA|SHA-1]]-tunniste jolla siihen voidaan viitata. Tunnisteen avulla varmistetaan myös se, ettei tietokantaa voida vahingossa tai tahallaan korruptoida. | ||
== Käyttö == | == Käyttö == | ||
Rivi 66: | Rivi 66: | ||
Tässä on siis muutettu toisella rivillä esiintyvä <tt>void</tt> muotoon <tt>int</tt> ja lisätty toiseksiviimeinen rivi <tt>return 0;</tt>. | Tässä on siis muutettu toisella rivillä esiintyvä <tt>void</tt> muotoon <tt>int</tt> ja lisätty toiseksiviimeinen rivi <tt>return 0;</tt>. | ||
Nyt tehdyt, vielä | Nyt tehdyt, vielä commitoimattomat muutokset nähdään komennolla | ||
$ git status | $ git status | ||
# On branch master | # On branch master | ||
Rivi 95: | Rivi 95: | ||
Ensimmäinen commit | Ensimmäinen commit | ||
Lokissa näkyy jokaiselle commitille yksilöllinen tunnistenumero, commitin tekijä, kellonaika jolloin commit tehtiin ja | Lokissa näkyy jokaiselle commitille yksilöllinen tunnistenumero, commitin tekijä, kellonaika jolloin commit tehtiin ja commitiin liittyvä kommentti. Jos loki on pitkä sitä voi selata nuolinäppäimillä tai näppäimillä j ja k ja selaamistilasta voi siirtyä takaisin komentoriville painamalla q-näppäintä. Käyttämällä valitsinta <tt>-p</tt> Git näyttää myös versioiden välillä tapahtuneet [[diff|muutokset]]: | ||
$ git log -p | $ git log -p | ||
-- (osa tulosteesta poistettu) | -- (osa tulosteesta poistettu) | ||
Rivi 185: | Rivi 185: | ||
Nyt komennolla <tt>git log</tt> nähdään, että on kyseisen commitin yhteydessä on tapahtunut kahden haaran liittäminen, sillä commitin tunnistenumeron alapuolelle ilmestyy rivi | Nyt komennolla <tt>git log</tt> nähdään, että on kyseisen commitin yhteydessä on tapahtunut kahden haaran liittäminen, sillä commitin tunnistenumeron alapuolelle ilmestyy rivi | ||
Merge: 040c39d... b2626d8... | Merge: 040c39d... b2626d8... | ||
Numero- ja kirjainyhdistelmät viittaavat tiettyyn | Numero- ja kirjainyhdistelmät viittaavat tiettyyn commiteihin, joiden välillä liitos tapahtui (commitin tunnistenumerosta ilmoitetaan vain alkuosa jos se riittää yksilöimään commitin). | ||
Kun luomallamme kehityshaaralla ei enää ole käyttöä, se voidaan poistaa komennolla | Kun luomallamme kehityshaaralla ei enää ole käyttöä, se voidaan poistaa komennolla | ||
Rivi 194: | Rivi 194: | ||
=== Tagit ja tunnisteet === | === Tagit ja tunnisteet === | ||
Kuten aiemmin huomattiin, jokaiseen | Kuten aiemmin huomattiin, jokaiseen commitiin viitataan yksilöllisellä mystisellä kirjain- ja numeroyhdistelmällä. Tämän lisäksi Git mahdollistaa tiettyjen commitien nimeämisen selväkielisillä tageilla. Esimerkiksi nimetään alussa ensimmäisen korjauksen jälkeen tehty commit nimelle "v1.0": | ||
$ git tag v1.0 770194dd647d7f | $ git tag v1.0 770194dd647d7f | ||
Tässä 770194dd647d7f on alkuosa kyseiseen muokkauksen tunniste (ja luultavasti eroaa omassa järjestelmässäsi). Aina, kun Gitissä viitataan tiettyyn muokkaukseen sen tunnisteella riittää kirjoittaa tunnisteen alkuosaa niin pitkälle, että se yksilöi tietyn tunnistenumeron versiohistoriasta. | Tässä 770194dd647d7f on alkuosa kyseiseen muokkauksen tunniste (ja luultavasti eroaa omassa järjestelmässäsi). Aina, kun Gitissä viitataan tiettyyn muokkaukseen sen tunnisteella riittää kirjoittaa tunnisteen alkuosaa niin pitkälle, että se yksilöi tietyn tunnistenumeron versiohistoriasta. | ||
Tagitetaan vastaavasti uusin | Tagitetaan vastaavasti uusin commiti versiolle 2.0: | ||
$ git tag v2.0 | $ git tag v2.0 | ||
Kaikki määritetyt tagit saa listattua komennolla | Kaikki määritetyt tagit saa listattua komennolla | ||
Rivi 214: | Rivi 214: | ||
näyttäisi tagilla v1.0 merkityn tilan jälkeen tapahtuneet muutokset tagiin v2.0 asti. | näyttäisi tagilla v1.0 merkityn tilan jälkeen tapahtuneet muutokset tagiin v2.0 asti. | ||
Edellä esiteltiin eräänlainen tagi HEAD joka viittaa nykyiseen | Edellä esiteltiin eräänlainen tagi HEAD joka viittaa nykyiseen commitiin. Lisäksi voidaan käyttää merkintää ^, joka viittaa edeltäneeseen commitiin (esim. HEAD^ tai v1.0^), esimerkiksi | ||
$ git diff v1.0^ v1.0 | $ git diff v1.0^ v1.0 | ||
näyttäisi erot commitin v1.0 ja sitä edeltäneen commitin välillä. Vastaavasti kaksi | näyttäisi erot commitin v1.0 ja sitä edeltäneen commitin välillä. Vastaavasti kaksi commitia taaksepäin on ^^ jne. Yleisemmin voidaan käyttää merkintää ~numero, esimerkiksi HEAD~4 viittaa 4 commitia taaksepäin. Liitetyille (''merge'') commiteille löytyy useampia edeltäjiä, jolloin niitä merkitään esimerkiksi HEAD^1 ja HEAD^2. | ||
Yleisesti kaikissa tapauksissa, joissa Gitille annettaisiin commitin tunniste, voidaan käyttää myös kyseiselle commitille merkattua tagia. Katsotaan esimerkiksi millaiseen | Yleisesti kaikissa tapauksissa, joissa Gitille annettaisiin commitin tunniste, voidaan käyttää myös kyseiselle commitille merkattua tagia. Katsotaan esimerkiksi millaiseen commitiin asetettiin tagi v2.0: | ||
$ git show v2.0 | $ git show v2.0 | ||
Tietyn tagin merkkaamasta commitista voidaan aloittaa myös uusi haara: | Tietyn tagin merkkaamasta commitista voidaan aloittaa myös uusi haara: | ||
$ git branch vakaa v1.0 | $ git branch vakaa v1.0 | ||
loisi uuden haaran nimellä vakaa siten, että haarasta löytyisi vain ne commitit, jotka on tehty tähän | loisi uuden haaran nimellä vakaa siten, että haarasta löytyisi vain ne commitit, jotka on tehty tähän commitiin mennessä. | ||
Kehitsyhaaran sisällä voidaan palata tiettyyn vanhaan | Kehitsyhaaran sisällä voidaan palata tiettyyn vanhaan commitiin komennolla <tt>git reset</tt>: | ||
$ git reset --hard v1.0 | $ git reset --hard v1.0 | ||
palaisi valitussa haarassa tagin v1.0 osoittamaan | palaisi valitussa haarassa tagin v1.0 osoittamaan commitiin. Tämä komento poistaa kaikki tehdyt commitit viitatun commitin jälkeen ja lisäksi paikallisesti tehdyt, versionhallintaan siirtämättömät muokkaukset. Tätä ei pidä käyttää julkisesti käytössä olevassa Git-varastossa. Sen sijaan on käytettävä komentoa <tt>git revert</tt>. | ||
=== git merge ja git rebase === | === git merge ja git rebase === | ||
Rivi 263: | Rivi 263: | ||
Elisa voi myös suoraan päivittää kehityshaaraansa Oskun haaraan tehdyt muutokset suoraan komennolla | Elisa voi myös suoraan päivittää kehityshaaraansa Oskun haaraan tehdyt muutokset suoraan komennolla | ||
$ git pull | $ git pull | ||
Komennolle ei tarvitse antaa parametreja sillä <tt>git clone</tt> on tallentanut Gitin tietokantaan tiedon siitä, mistä alkuperäinen kopio on tehty. Jos versioiden välillä on ristiriitoja ei muutoksista tehdä | Komennolle ei tarvitse antaa parametreja sillä <tt>git clone</tt> on tallentanut Gitin tietokantaan tiedon siitä, mistä alkuperäinen kopio on tehty. Jos versioiden välillä on ristiriitoja ei muutoksista tehdä commitia vaan ristiriidat jätetään käyttäjän ratkaistavaksi kuten <tt>git merge</tt>:n kanssa huomattiin. Kun ristiriidat on korjattu viedään muutokset versionhallintaan tavalliseen tapaan <tt>git commit -a</tt> -komennolla. | ||
== Gitk == | == Gitk == |