Versionhallinnan haarat

Versionhallinnan haarat ovat nimensä mukaisesti haarautuneita polkuja versiohistoriassa. Ne helpottavat samassa tietovarastossa tiiminä työskentelyä, koska työskentelyä voi eriyttää eri haaroihin tarpeen mukaan.

Gitissä haarat ovat viitteitä johonkin tiettyyn committiin. Kun haaraan luodaan uusi commit, Git siirtää haaran viittaamaan tähän. Uuden haaran voi luoda mihin tahansa olemassa olevaan committiin, niitä voidaan siirtää commitista toiseen ja yhdistää.

Erilaisia tapoja käyttää haaroja

Päähaarassa koodaaminen on yksinkertaisin työskentelytapa Gitissä. Siinä ei ole käytössä muita haaroja kuin main. Muutokset suunnitellaan ja toteutetaan pienissä askeleissa ja koodia pitää muistaa commitoida säännöllisesti päivittäin. Versionhallintaan syntyvää historiaa pitää pitää muuttumatomana. Versionhallinnan opettelu aloitetaan yleensä tällä lähestymisellä.

Ominaisuuksien mukaan haarojen käyttäminen mahdollistaa main-haaran koodin pitämisen projektin virallisen, ehjän, version edustajana. Työskentelytapa on seuraava: Koodaaminen aloitetaan main-haarasta. Uutta ominaisuutta varten luodaan oma haara, jota päivitetään (add, commit, push). Jokainen push työntää muutokset etätietovarastoon kyseiseen haaraan. Etätietovarastossa muut voivat katselmoida toteutettua ominaisuutta ja antaa koodista palautetta ennenkuin koodi hyväksytään osaksi päähaaraa. Tämän mahdollistaa liitospyynnön eli pull requestin kautta kaikkien projektin lisäysten hyväksyminen osaksi päähaaraan. Pull requestin hyöty sen sijaan, että muutokset liitettäisiin itse päähaaraan syntyy siitä, että sen lisäksi, että haarojen avulla voidaan eristää ominaisuuksia toteuttaminen stabiilista ohjelmasta, liitospyynnöillä voidaan näistä käydä keskustelua tiimiläisten kesken. Näin versionhallinnan avulla voidaan luoda koodin laatua jatkuvasti toteutuksen aikana arvioiva ja ylläpitävä toimintatapa.

Haarojen käyttö

Käymme lyhyesti läpi, miten

  • Haaroja luodaan

  • Haaroja voidaan tarkastella

  • Haarojen välillä voidaan siirtyä

  • Haaroja poistetaan

  • Haarat käyttäytyvät etätietovarastojen kanssa

Haarojen luonti

Haarojen luomiseen on kaksi tapaa. Komennot git branch ja git checkout.

git branch <haaran nimi>

Luo uuden haaran siihen committiin, johon HEAD (tai HEADin osoittama haara) osoittaa.

git checkout -b <haaran nimi>

Luo uuden haaran siihen committiin, johon HEAD (tai HEADin osoittama haara) osoittaa. Ja siirtää HEADin osoittamaan luotuun haaraan.

Haarojen listaus

Olemassaolevia haaroja voidaan tarkastella branch -komennolla.

git branch

Listaa paikalliset haarat. Aktiivinen haara on merkitty tähdellä (*).

git branch -a

Listaa kaikki paikalliset haarat ja etätietovarastojen haarat. Aktiivinen haara on merkitty tähdellä (*).

Haarojen poistaminen

Haarojen poistaminen paikallisesta tietovarastosta

git branch -d <haaran nimi>

Poistaa nimetyn haaran paikallisesta tietovarastosta.

Paikallisen haaran poistaminen ei päivity automaattisesti etätietovarastoon. Tästä lisää myöhemmin.

Attention

Paikallisen haaran poistaminen ei poista haaraa etätietovarastosta push-operaation yhteydessä.

Haarojen välillä siirtyminen

Sen lisäksi, että checkouttia voidaan käyttää palauttamaan vanhoja tiedostoversioita versiohistoriasta, komentoa voidaan käyttää myös siirtämään versiopuun HEADia.

git checkout <haaran nimi>

Siirtää HEADin nimettyyn haaraan

git checkout <commit>

Siirtää HEADin committiin, jolloin ollaan detached-HEAD -tilassa (eli HEAD on irti haarasta).

Käytännössä olemassa olevaan committiin siirrytään, jos halutaan luoda uusi haara (tai testata toista versiota ohjelmasta). Detached-HEAD-tilasta pääsee siis eteenpäin luomalla uuden haaran siirryttyä commitia varten.

Haarojen vertailu

Haarojen (ja committien) välisiä eroja voidaan tarkastella komennolla git diff. Oletuksena diff näyttää työpuun eroa indexiin, mutta sille voidaan määritellä yksi tai useampi haara, johon vertailu tehdään.

git diff HEAD <commit/haara>

Vertaa HEADia määriteltyyn committiin tai haaraan.

git diff <commit/haara 1> <commit/haara 2>

Vertaa kahta määriteltyä committia tai haaraa keskenään.

git diff HEAD <commit/haara> \-\- <polku>

Vertaa HEADia määriteltyyn committiin tai haaraan ainoastaan määritellystä polusta.

Haaran siirtäminen

Voit siirtää haaran osoittamaan johonkin toiseen committiin käyttämällä komentoa git reset.

git reset <commit>

Siirtää HEADin osoittaman haaran osoittamaan nykyisen commitin sijaan määriteltyä committia.

git reset HEAD~<luku>

Siirtää HEADin luvun osoittaman määrän taaksepäin versiohistoriassa.

git reset \-\-hard <commit>

Siirtää HEADin osoittaman haaran osoittamaan nykyisen commitin sijaan määriteltyä committia. Muuttaa työpuun vastaamaan committia.

Hard resetin sijaan kannatta ennemmin tehdä soft-reset. Tällöin voit luoda nykyisestä työpuun tilasta uuden commitin haaraan. Voit edelleen tehdä hard-resetin käsin checkouttaamalla soft resetin jälkeen työpuun.