Git
Git-työskentelymallit

Git-työskentelymalleja on kehitetty erilaisten tiimien ja projektien tarpeisiin. Tässä tärkeimmät mallit:

GitHub Flow

GitHub Flow on yksinkertainen ja kevyt malli, joka sopii erityisen hyvin jatkuvan julkaisun (continuous deployment) projekteihin.

Pääperiaatteet:

  • Master/Main on aina valmis tuotantoon - kaikki master-haarassa oleva koodi on toimivaa ja valmista julkaistavaksi
  • Luo feature-haara - jokaiselle uudelle ominaisuudelle tai korjaukselle luodaan oma haara
  • Tee committeja säännöllisesti - pidä muutokset pieninä ja tee committeja usein
  • Avaa pull request - kun olet valmis, avaa pull request keskustelua ja katselmointia varten
  • Katselmointi ja keskustelu - tiimi käy läpi muutokset ja antaa palautetta
  • Merge masteriin - hyväksytyn pull requestin jälkeen muutokset yhdistetään masteriin
  • Julkaise - masterin muutokset voidaan julkaista heti tuotantoon

Edut:

  • Yksinkertainen oppia ja käyttää
  • Sopii hyvin pienille ja keskikokoisille tiimeille
  • Tukee jatkuvaa julkaisua
  • Vähemmän haaroja ylläpidettävänä

Haitat:

  • Ei tue hyvin useita tuotantoversioita samanaikaisesti
  • Vaikea hallita scheduled releases -julkaisuja
Git Flow

Git Flow on perusteellisempi malli, joka on suunniteltu projekteihin, joissa on määrätyt julkaisuaikataulut ja useita versioita ylläpidettävänä.

Päähaarat:

  • master/main - sisältää tuotantokoodin, jokainen commit on uusi versio
  • develop - kehityshaara, johon integroidaan kaikki uudet ominaisuudet

Tukihaarat:

  • feature/* - uusien ominaisuuksien kehitys (develop → feature → develop)
  • release/* - julkaisun valmistelu (develop → release → master + develop)
  • hotfix/* - kiireelliset tuotantokorjaukset (master → hotfix → master + develop)

Työnkulku:

  1. Uusi ominaisuus kehitetään feature-haarassa (lähtee develop-haarasta)
  2. Valmis feature yhdistetään takaisin develop-haaraan
  3. Kun develop on valmis julkaisuun, luodaan release-haara
  4. Release-haarassa tehdään viimeiset korjaukset ja version numerointi
  5. Release yhdistetään sekä masteriin että developiin
  6. Master-haaraan tehdään version tag
  7. Hotfixit tehdään suoraan masterista ja yhdistetään sekä masteriin että developiin

Edut:

  • Selkeä rakenne suurille projekteille
  • Tukee useita versioita samanaikaisesti
  • Erottelee kehityksen, testauksen ja tuotannon
  • Hyvä dokumentoitu prosessi

Haitat:

  • Monimutkainen pienille projekteille
  • Paljon haaroja ylläpidettävänä
  • Hidas julkaisusykli
  • Ei sovellu hyvin jatkuvaan julkaisuun
Trunk-Based Development

Trunk-Based Development on malli, jossa kehittäjät työskentelevät pääasiassa yhdessä päätuotannossa (trunk/master) ja käyttävät hyvin lyhytikäisiä feature-haaroja.

Pääperiaatteet:

  • Yksi päähaara - kaikki kehitys tapahtuu master/trunk-haarassa tai hyvin lyhytikäisissä feature-haaroissa
  • Pienet, usein tehtävät commitit - muutokset integroidaan päätuotantoon useita kertoja päivässä
  • Feature flagit - keskeneräiset ominaisuudet piilotetaan feature flag -lipuilla
  • Lyhytikäiset haarat - jos haaroja käytetään, ne elävät maksimissaan 1-2 päivää
  • Vahva automaattinen testaus - laaja testiautomaatio varmistaa koodin laadun

Edut:

  • Nopea integraatio ja palaute
  • Vähemmän merge-konflikteja
  • Tukee jatkuvaa integraatiota ja julkaisua
  • Yksinkertainen haararakenne
  • Edistää tiimityötä ja koodin yhteisomistajuutta

Haitat:

  • Vaatii vahvat testit ja CI/CD-putket
  • Feature flagit voivat monimutkaistaa koodia
  • Vaatii korkean tason tiimin kurinalaisuutta
  • Ei sovellu tiimeille, jotka eivät pysty julkaisemaan usein
GitLab Flow

GitLab Flow on GitHubin ja Git Flow:n välimuoto, joka yhdistää molempien parhaat puolet.

Pääperiaatteet:

  • Master on kehityshaara - kaikki uudet ominaisuudet mergetään masteriin
  • Ympäristöhaarat - staging ja production haarat eri ympäristöille
  • Feature-haarat - uudet ominaisuudet kehitetään omissa haaroissaan
  • Merge request - kaikki muutokset käydään läpi ennen yhdistämistä

Ympäristöihin perustuva malli:

  • master → staging → production
  • Muutokset etenevät haarojen läpi testauksen mukana

Edut:

  • Joustavampi kuin Git Flow
  • Tukee useita ympäristöjä
  • Yksinkertaisempi kuin Git Flow, mutta monipuolisempi kuin GitHub Flow
Kumpi malli minulle?
Projektin tyyppi Suositeltava malli
Pieni projekti, jatkuva julkaisu GitHub Flow tai Trunk-Based Development
Suuri projekti, määrätyt julkaisut Git Flow
Keskikokoinen projekti, useita ympäristöjä GitLab Flow
DevOps-kulttuuri, vahva automaatio Trunk-Based Development
Avoimen lähdekoodin projekti GitHub Flow
Enterprise-sovellus, useita versioita Git Flow

Muista: Mikään malli ei ole absoluuttisesti paras. Valitse tiimisi ja projektisi tarpeisiin sopiva malli ja muokkaa sitä tarpeen mukaan!



Toggle Menu