Skip to main content

Git pikaopas

Posted in

Tämä opas on harjoitustyöni Saimaan ammattikorkeakoulun Testaus ja laadunvalvonta -kurssille.

 

1. JOHDANTO

 

Git on ilmainen ja avoimen lähdekoodin versionhallintajärjestelmä, joka soveltuu niin pieniin kuin suuriinkin projekteihin. Git tukee nopeaa ja tehokasta hajautettua työskentelyä. Git on alunperin suunniteltu Linux-kernelin kehitykseen, jonka vuoksi se on suunniteltu mahdollisimman nopeaksi, johtuen linux-kerneliin tulevien päivitysten suuresta määrästä.

Git toimii Linux, Mac OS X ja Windows käyttöjärjestelmissä. Se on julkaistu GPL2 lisenssillä. Git-versionhallintaa käyttää muun muassa linux-ydin, android, Qt ja eclipse.

 

2. ASENTAMINEN

 

Git:n voi helposti asentaa Ubuntuun komennolla sudo apt-get install git git-core tai pakettienhallinnan kautta valitsemalla paketit git ja git-core.

synaptic

Kuva 1, pakettienhallinta

 

Tämä asentaa kaiken tarvittavan git:n käyttöön. Tarvittaessa voi myös asentaa jonkin graafisen käyttöliittymän, mutta niitä ei käsitellä tässä tutkielmassa.

 

3. KÄYTTÖ

 

Tässä tutkielmassa käsitellään git:n käyttöä komentoriviltä. Esimerkkinä käytetään yksinkertaista HelloWorld-ohjelmaa.

3.1 Perusasetukset

Aluksi on säädettävä perusasetukset kuntoon. Niistä tärkeimmät ovat nimi ja sähköpostiosoite. Voit asettaa ne seuraavilla komennoilla:

git config --global user.name "Etunimi Sukunimi"

git config --global user.email osoite@example.com

3.2 Git:n ottaminen käyttöön projektissa

Git:n voi ottaa helposti käyttöön projektissa siirtymällä projektikansioon ja antamalla komennon: git init

Tämä luo piilohakemiston .git projektikansioon. Piilohakemisto sisältää kaikki git:n tarvitsemat projektikohtaiset tiedot.

3.3 Tiedostojen lisääminen versionhallintaan

HelloWorld-projektiin lisätään hello.cpp ja readme tiedostot. Kun tiedostojen ediotointi on tehty, ne täytyy lisätä versionhallintaan. Versionhallintaan lisääminen onnistuu helposti komennolla:

git add readme hello.cpp

Tiedosto siis lisätään git:n seuraavasti: git add tiedostonnimi

Voit myös lisätä kaikki tiedostot kerralla käskyllä git add .

3.4 Git status

Voit tarkastella mitä muutoksia olet tekemässä käskyllä: git status. Git status antaa HelloWorld-projektissa seuraavanlaisen tulosteen:

 

# On branch master

#

# Initial commit

#

# Changes to be committed:

# (use "git rm --cached <file>..." to unstage)

#

# new file: hello.cpp

# new file: readme

#

 

Ensimmäisellä rivillä näkyy kehityshaara eli branch. Tässä tapauksessa haaran nimi on master. Kehityshaarasta kerrotaan lisää myöhemmin. Alempana näkyvät tiedostot, jotka ollaan lisäämässä.

3.5 Commitin tekeminen

Muutoksia projektiin ei olla vielä lisätty. Muutokset lisätään seuraavalla komennolla: git commit. Tämä komento avaa järjestelmän oletus tekstieditorin. Committin kirjataan kaikki tehdyt muutokset lyhyesti, selkeästi ja mahdollisimman tarkasti. Tämän jälkeen tallennetaan ja suljetaan editori, jonka jälkeen muutokset ovat lisätty projektiin. Tulosteena käsky antaa seuraavan:

 

[master (root-commit) 2e214dc] lisättiin readme ja hello.cpp tiedostot projektiin

0 files changed, 0 insertions(+), 0 deletions(-)

create mode 100644 hello.cpp

create mode 100644 readme

 

Tulosteessa näkyy kuinka montaa eri tiedostoa muokattiin, montako riviä lisättiin ja montako poistettiin. Lisäksi tulosteessa näkyy lisätyt tiedostot.

komennot

Kuva 2, komennot.

 

Kuvassa 2 näkyy git:n perus workflow:

git init

git add tiedosto

git commit

Tästä eteenpäin muokatut ja uudet tiedostot lisätään git add komennolla, jonka jälkeen lisätään git commit komennolla.

3.6 Login tarkastelu

Voit tarkastella tehtyjä muutoksi projektissa komennolla git log. Käsky antaa tulosteena login tehdyistä commiteista.

 

joonas@terminator:~/ohjelmoinnit/c++/HelloWorld$ git log

commit 00773b69e8df0965b54db8c680f0a2072bb25d36

Author: Joonas <email@mail.com>

Date: Fri Apr 22 10:52:07 2011 +0300

 

alkukommentit hello.cpp tiedostoon

 

commit d36acbfe62ed01ca083e2da54efc2ff3652452df

Author: Joonas <email@mail.com>

Date: Fri Apr 22 10:51:06 2011 +0300

 

lisätty tulostus pääohjelmaan

 

commit 413b3b1d064eed2b10a1590d372ae9ddd8c00547

Author: Joonas <email@mail.com>

Date: Fri Apr 22 10:48:51 2011 +0300

 

tehty runko pääohjelmaan

 

commit ff40463aea49c8dd7c6d961d78035369fd9dcf14

Author: Joonas <email@mail.com>

Date: Fri Apr 22 10:47:21 2011 +0300

 

readme kirjoitettu

 

commit 2e214dc7960bf1e7bc45a6e01d9be7340dcd6d61

Author: Joonas <email@mail.com>

Date: Fri Apr 22 10:16:49 2011 +0300

 

lisättiin readme ja hello.cpp tiedostot projektiin

 

Tulosteessa näkyy commitin tunnus, tekijä, päiväys ja kirjoitettu kuvaus.

 

4. KEHITYSHAARAT

 

Git tukee projekteissa eri kehityshaarjoja. Kehityshaarat ovat kätevä tapa kehittää sovellusta.

4.1 Haaran luominen

Kehityshaaran voi luoda komennolla git branch testaus. Tämä luo uuden kehityshaaran nimeltä testaus. Käskyllä git branch näkee versionhallinnan kehityshaarat ja tähdellä merkitty haara on aktiivinen.

 

joonas@terminator:~/ohjelmoinnit/c++/HelloWorld$ git branch

* master

testaus

 

Yläpuolisessa tulosteessa näkyy master ja testaus haarat, joista master on aktiivinen. Master haara on myös oletuksena ja se on pääkehityshaara. Kehityshaarasta voi siirtyä toiseen komennolla git checkout haarannimi.

4.2 Kehityshaaran yhdistäminen

Testaus haaraan tehdyt muutokset eivät näy master haarassa. Jos teemme testaus haarassa muutoksia ohjelmaan ja commitoimme muutokset, niin ne eivät näy master haarassa. Tämä on hyvä tapa kehittää ohjelmaa. Voidaan esimerkiksi tehdä haara nimeltä versio2, johon tehdää kaikki seuraavan version muutokset. Kun muutokset ovat valmiit voidaan versio2-haara yhdistää master haaraan. Yhdistäminen tapahtuu ensiksi asettamalla se haara aktiiviseksi johon yhdistäminen halutaan tehdä, jonka jälkeen annetaan käsky git merge haarannimi.

HelloWorld-projektissa on lisätty testaus-kehityshaaraan muutamia muutoksia. Samalla on tehty muutoksia master-haaraan. Koodari on saanut valmiiksi testaus-haaran ja haluaa yhdistää sen master-haaraan. Hän tekee sen siirtymällä aluksi master-haaraan: git checkout master. Tämän jälkeen hän yhdistää testaus-haaran: git merge testaus. Käsky antaa seuraavanlaisen tulostuksen:

 

joonas@terminator:~/ohjelmoinnit/c++/HelloWorld$ git merge testaus

Auto-merging hello.cpp

CONFLICT (content): Merge conflict in hello.cpp

Automatic merge failed; fix conflicts and then commit the result.

 

Tuloste kertoo, että yhdistämisessä on tullut ristiriita eli conflict. Ristiriita on tiedostossa hello.cpp ja sen sisällöksi on tullut:

merge

Kuva 3, merge conflict

Kuvassa 3 näkyy hello.cpp:n sisältö. <<<<<< HEAD tarkoittaa master-haarassa olevaa riviä ja sen alapuolella ovat testaus-haaran rivit. Koodarin täytyy nyt käsinein korjata ristiriidat. Tämän jälkeen hän tekee commitin. Nyt haarat ovat yhdistetty.

 

5. PROJEKTIIN OSALLISTUMINEN

 

Yleensä ohjelmistoprojekteissa on mukana enemmäin kuin yksi koodari. Git mahdollistaa helpon monen koodarin yhteistyön.

5.1 Projektin kloonaaminen

Kun projektiin liittyy mukaan uusi koodari, hänen täytyy kloonata eli kopioidan ohjelmiston koodit itselleen. Git:llä se onnistuu seuraavalla käskyllä: git clone polku/projektin/hakemistoon. Esimerkiksi seuraava käsky kopioi HelloWorld-projektin lähdekoodit: git clone /home/joonas/ohjelmoinnit/c++/HelloWorld/

Tämän jälkeen uusi koodari voi ohjelmoida ja commitoida muutoksia kopioituun projektiin.

5.2 Muutosten hakeminen

Kun koodarit tekevät muutoksia ne eivät kuitenkaan päivity toisille koodareille. Muutokset täytyy hakea pull-käskyllä. Pull-käsky on seuraavanlainen: git pull polku/projektin/hakemistoon/ kehityshaarannimi

Esimerkiksi HelloWorld-projektissa voisin hakea toisen koodarin muutokset seuraavasti: git pull /home/koodari/HelloWorld/ master

Koodari, joka taas kloonasi projektini, voisi hakea tekemäni muutokset käskyllä git pull.

 

Voit ladata tulostettavan version.

AttachmentSize
git-Joonas-Ruotsalainen.pdf419.14 Kt