Muokataan sivua Git
Siirry navigaatioon
Siirry hakuun
Kumoaminen voidaan suorittaa. Varmista alla olevasta vertailusta, että haluat saada aikaan tämän lopputuloksen, ja sen jälkeen julkaise alla näkyvät muutokset.
Nykyinen versio | Oma tekstisi | ||
Rivi 3: | Rivi 3: | ||
| kuva=[[Kuva:Git-logo.svg]] | | kuva=[[Kuva:Git-logo.svg]] | ||
| kuvateksti= | | kuvateksti= | ||
| lisenssi=[[GPL]] | | lisenssi=[[GPL]] | ||
| käyttöliittymä=teksti | | käyttöliittymä=teksti | ||
| kotisivu=[ | | kotisivu=[http://git-scm.com/ git-scm.com]}} | ||
Git on hajautettu [[versionhallintajärjestelmä]], jonka kehityksen aloitti [[Linus Torvalds]] Linuxin [[ydin|ytimen]] kehitystä varten. Se korvasi ytimen kehityksessä suljetun lähdekoodin BitKeeperin. | |||
}} | |||
== Perusperiaate == | == Perusperiaate == | ||
Rivi 23: | Rivi 20: | ||
Luodaan ensin muutama tiedosto projektia varten: | Luodaan ensin muutama tiedosto projektia varten: | ||
hello.c ([[C]]-kielinen lähdekoodi, ohjelma tulostaa ruudulle yhden rivin tekstiä, kääntyy komennolla <tt>[[gcc]] hello.c -o hello</tt>): | hello.c ([[C]]-kielinen lähdekoodi, ohjelma tulostaa ruudulle yhden rivin tekstiä, kääntyy komennolla <tt>[[gcc]] hello.c -o hello</tt>): | ||
#include <stdio.h> | |||
#include <stdio.h> | void main() { | ||
void main() { | printf("Hei, maailma\n"); | ||
} | |||
} | |||
README: | README: | ||
Esimerkkiprojekti, jonka avulla opetellaan Gitin käyttöä | Esimerkkiprojekti, jonka avulla opetellaan Gitin käyttöä | ||
Rivi 60: | Rivi 55: | ||
$ git config --global user.name "Oma Nimi" | $ git config --global user.name "Oma Nimi" | ||
$ git config --global user.email oma@sähköposti.osoite | $ git config --global user.email oma@sähköposti.osoite | ||
=== Tiedostojen muokkaaminen === | === Tiedostojen muokkaaminen === | ||
Nyt kun ensimmäinen commit on tehty voidaan alkaa kehittämään projektia jolloin näemme, miten Gitin kanssa toimitaan tiedostojen muuttuessa. Tiedosto <tt>hello.c</tt> ei ole standardin mukainen eikä se [[kääntäminen|käänny]] suoritettavaksi ohjelmaksi. Korjataan tämä ongelma muuttamalla tiedosto <tt>hello.c</tt> muotoon | Nyt kun ensimmäinen commit on tehty voidaan alkaa kehittämään projektia jolloin näemme, miten Gitin kanssa toimitaan tiedostojen muuttuessa. Tiedosto <tt>hello.c</tt> ei ole standardin mukainen eikä se [[kääntäminen|käänny]] suoritettavaksi ohjelmaksi. Korjataan tämä ongelma muuttamalla tiedosto muotoon | ||
<tt>hello.c</tt> | |||
#include <stdio.h> | |||
int main() { | |||
printf("Hei, maailma\n"); | |||
return 0; | |||
} | |||
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ä commitoimattomat muutokset nähdään komennolla | |||
Nyt tehdyt, vielä | |||
$ git status | $ git status | ||
# On branch master | # On branch master | ||
Rivi 208: | Rivi 196: | ||
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": | 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 | 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 commit versiolle 2.0: | Tagitetaan vastaavasti uusin commit versiolle 2.0: | ||
Rivi 233: | Rivi 221: | ||
$ 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 | |||
loisi uuden haaran nimellä vakaa siten, että haarasta löytyisi vain ne commitit, jotka on tehty tähän commitiin 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 commitiin komennolla <tt>git reset</tt>: | |||
$ git reset --hard v1.0 | $ git reset --hard v1.0 | ||
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>. | 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>. | ||
Rivi 244: | Rivi 231: | ||
=== git merge ja git rebase === | === git merge ja git rebase === | ||
=== | === Git yhteistyövälineenä === | ||
Versionhallinnasta on eniten iloa tilanteessa, jossa useampi kehittäjä toimii saman projektin kimpussa. Oletetaan nyt, että äskeinen kehitystyö tapahtui hakemistossa <tt>/home/osku/projekti</tt>. Nyt toinen samalla koneella oleva käyttäjä haluaa osallistua kehitystyöhön. Tällöin hän voi hakea versionhallinnasta kopion itselleen komennolla <tt>git clone</tt>: | Versionhallinnasta on eniten iloa tilanteessa, jossa useampi kehittäjä toimii saman projektin kimpussa. Oletetaan nyt, että äskeinen kehitystyö tapahtui hakemistossa <tt>/home/osku/projekti</tt>. Nyt toinen samalla koneella oleva käyttäjä haluaa osallistua kehitystyöhön. Tällöin hän voi hakea versionhallinnasta kopion itselleen komennolla <tt>git clone</tt>: | ||
$ git clone /home/osku/projekti hello | $ git clone /home/osku/projekti hello | ||
Rivi 260: | Rivi 247: | ||
$ git log -p HEAD..FETCH_HEAD | $ git log -p HEAD..FETCH_HEAD | ||
Jos muutokset näyttävät hyviltä, ne voidaan commitoida liittämällä <tt>FETCH_HEAD</tt>-haara aktiivisena olevaan haaraan komennolla | Jos muutokset näyttävät hyviltä, ne voidaan commitoida liittämällä <tt>FETCH_HEAD</tt>-haara aktiivisena olevaan haaraan komennolla | ||
$ git merge | $ git merge FETCH_HAD | ||
Etäkoneilla sijaitseviin kehityshaaroihin voidaan luoda linkkejä komennolla <tt>git remote</tt>. Esimerkiksi Osku voisi luoda Elisan haaraan linkin <tt>elisa</tt> komennolla | Etäkoneilla sijaitseviin kehityshaaroihin voidaan luoda linkkejä komennolla <tt>git remote</tt>. Esimerkiksi Osku voisi luoda Elisan haaraan linkin <tt>elisa</tt> komennolla | ||
Rivi 278: | Rivi 265: | ||
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. | 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 == | |||
=== | |||
==Aiheesta muualla== | ==Aiheesta muualla== | ||
* [http://git-scm.com/ Gitin kotisivu] | *[http://git-scm.com/ Gitin kotisivu] | ||
* [http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html Git tutorial] | *[http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html Git tutorial] | ||
* [[wikipedia:Git (software)|Git englanninkielisessä Wikipediassa]] | *[[wikipedia:Git (software)|Git englanninkielisessä Wikipediassa]] | ||
[[Luokka:Kehitystyökalut]] | [[Luokka:Kehitystyökalut]] |