Käsitteet: main, branch, origin ja muut

Gitissä on muutama peruskäsite, jotka kannattaa sisäistää, koska ne selittävät miksi komennot toimivat kuten toimivat.

Repository (repo) on projektikansio, jossa on Git-historia mukana. Repo sisältää sekä tiedostot että .git/-hakemiston, jossa Git säilyttää kaiken versionhallintatiedon.

Commit on pysyvä “tallennuspiste” projektin historiassa. Commit sisältää viittauksen edelliseen committiin sekä muutokset (diffit) siihen hetkeen asti. Kun teet commitin, annat yleensä viestin (esim. “Lisätty uusi artikkeli”).

Branch (haara) on käytännössä nimi, joka osoittaa tiettyyn commitin “kärkeen” (latest commit). Kun teet uusia committeja branchiin, branchin osoitin liikkuu eteenpäin. Brancheilla kehität ominaisuuksia erillään, ilman että päähaara sotkeentuu.

main on yleisesti käytetty oletus-branch (ennen vanhaan usein master). Tyypillinen käytäntö on pitää main aina mahdollisimman “julkaisukelpoisena” ja tehdä muutokset omissa feature-brancheissa, jotka sitten yhdistetään takaisin main:iin.

HEAD on “missä olet nyt” -viittaus. Useimmiten HEAD osoittaa nykyiseen branchiin (esim. main). Jos checkoutaat suoraan jonkin commitin (et branchia), päädyt tilaan nimeltä detached HEAD.

Remote on etärepo, esimerkiksi GitHubissa. Paikallinen repo on sinun koneellasi, remote on verkossa. Remoten nimi on yleensä origin, mutta se on vain oletusnimi: origin voi olla mikä tahansa etärepo-osoite, jolle annat nimen.

origin tarkoittaa siis ”tämän paikallisen repon oletusetärepo” (yleensä GitHub). Komento git remote -v näyttää, mihin osoitteeseen origin (ja muut mahdolliset remotes) viittaavat.

Push lähettää paikalliset commitit remoteen (esim. GitHubiin). Pull hakee muutokset remotesta ja yrittää yhdistää ne omaan branchiisi (usein fetch + merge tai fetch + rebase asetuksista riippuen).

Upstream tarkoittaa “mihin remote-branchiin tämä paikallinen branch on sidottu”. Kun ajat git push -u origin main, asetat upstreamin niin, että jatkossa pelkkä git push tietää kohteen.

Merge yhdistää kahden branchin muutokset. Yleensä yhdistetään feature-branch main:iin. Jos Git ei pysty automaattisesti yhdistämään (samat rivit muuttuneet eri tavoin), syntyy merge-konflikti, joka ratkaistaan käsin.

Staging area (index) on välietappi ennen committia. git add vie muutokset stagingiin. Näin voit valita tarkasti mitä menee seuraavaan committiin.

Jos nämä käsitteet ovat hallussa, Gitin komennot alkavat tuntua loogisilta: status → add → commit → push, ja toisaalta pull → merge sekä branch → switch → merge.