Ero sivun ”Git” versioiden välillä

Siirry navigaatioon Siirry hakuun
16 merkkiä poistettu ,  1. tammikuuta 2010
Sitaattilainan (esim "commit") taivuttamisessa loppukonsonantti ei kahdennu
(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. ''committeja'' (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.  
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ä committoimattomat muutokset nähdään komennolla  
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 committiin 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]]:
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 committeihin, joiden välillä liitos tapahtui (commitin tunnistenumerosta ilmoitetaan vain alkuosa jos se riittää yksilöimään commitin).
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 committiin viitataan yksilöllisellä mystisellä kirjain- ja numeroyhdistelmällä. Tämän lisäksi Git mahdollistaa tiettyjen committien nimeämisen selväkielisillä tageilla. Esimerkiksi nimetään alussa ensimmäisen korjauksen jälkeen tehty commit nimelle "v1.0":
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 committi versiolle 2.0:
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 committiin. Lisäksi voidaan käyttää merkintää ^, joka viittaa edeltäneeseen committiin (esim. HEAD^ tai v1.0^), esimerkiksi  
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 committia taaksepäin on ^^ jne. Yleisemmin voidaan käyttää merkintää ~numero, esimerkiksi HEAD~4 viittaa 4 committia taaksepäin. Liitetyille (''merge'') commiteille löytyy useampia edeltäjiä, jolloin niitä merkitään esimerkiksi HEAD^1 ja HEAD^2.
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 committiin asetettiin tagi v2.0:
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 committiin mennessä.
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 committiin komennolla <tt>git reset</tt>:
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 committiin. 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>.
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ä committia 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.
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 ==
Rekisteröitymätön käyttäjä

Navigointivalikko