soodan sivut

arkisto

239 kirjotelmaa.

avainsanat

(Teksti julkaistu alunperin 1.1.2017 Kultaisen Tomaatin ("GT") numerossa 0/2017 plaintext-muodossa. Osa vuoden kestävää Git-opastusta vivahteella Otaniemen murretta.) Ilman versionhallintaa ei vain pärjää kunnolla missään päivää pidemmässä projektissa. GT tarjoaa vuoden mittaisen artikkelisarjan Gitin käyttöön - mitä, miksi ja miten.

Git on toinen yleisimmin käytetyistä ja tunnetuimmista järkevistä avoimen lähdekoodin versionhallintajärjestelmistä; jotkut vääräuskoiset tykkäävät käyttää Mercurialia. Linus Torvalds kehitti Gitin korvaamaan BitKeeperin käytön Linux-kernelin kehityksessä joskus 2005. Nykyisellään Gitiä kehittää ja ylläpitää kasa muitakin ihmisiä. Käyttäjiä sillä on SIMOSTI(), ja jollet kuulu joukkoon niin ei hätää - voit kääntää uuden sivun elämässäsi nyt vuodenvaihteen kunniaksi! Tässä lyhykäinen potkustartti peruskäyttöön; jatkoa seuraa myöhemmissä numeroissa. Gittiin kannattaa tuupata kaikki projektit, joiden parissa puuhailu kestää pidempään kuin yhden illan.

Gitiä käytetään tiedostojen säilömiseen ja niiden muutos- eli versiohistorian hallintaan. Kerralla säilöttyä dataa yhden hakemiston alla kutsutaan repositoryksi tai repoksi. Joistain muista systeemeistä poiketen Git versioi koko repon kaikkien tiedostojen tilan kerralla, eli eri tiedostoista ei ole yksitellen erillisiä versioita. Jokaisesta tilasta lasketaan sen yksilöivä sha1-tiiviste (hash), eikä "versionumero" tarkoita mitään, sillä historia ei välttämättä ole täysin lineaarinen vaan itseasiassa graafi. Git on nimensä mukaisesti "tyhmä", mikä tavallaan tarkoittaa, että se sisimmässään tietää hyvin vähän datan formaatista ja käsittelee kaiken binääridiffeinä. Tästä syystä se soveltuukin ihan hyvin suunnilleen kaikkeen, havaitsee heuristiikoilla mm. tiedoston siirtämisen (uudelleennimeämisen) ja sallii kaikenlaiset ulkoiset lisätyökalut.

Git toimii hajautetusti (distributed), mikä on erityisesti lähdekoodin ja vastaavan mössön hallintaan rutkasti järkevämpää kuin keskitetty (centralized) vaihtoehto. Tämä tarkoittaa sitä, että järjestelmällä on koko historia paikallisesti saatavilla, eikä esim. tiedostojen muutoslokin tarkastelemiseksi tarvitse ottaa yhteyttä mihinkään keskusserveriin. Tätä ei kannata kuitenkaan sekoittaa siihen, että Gitin kanssakin toimii hyvin keskitetty devausmalli, jossa kaikki devaajat kommunikoivat esim. Githubin kautta. Se vain ei ole välttämätöntä. Kullakin saman repon käyttäjällä on oma historiatietokantansa, jossa jokaisella voi olla toisille vielä julkaisemattomia muutoksia.

Gitin kaikki toiminnot pyörivät vahvasti sen sisäisen tietomallin ympärillä. Git on mainio hakkerityökalu viitseliäille macgyvereille, mutta sen varmaan suurin haittapuoli on juurikin se, että itse työkalu olettaa käyttäjän tietävän melko tarkkaan, miten se sisäisesti toimii. Siispä on hyvä tietää perusteet sekä komentorivihommista haluttuihin toimintoihin että siitä, mitä nämä toiminnot ovat Gitin mielestä. Git säilöö historian sisäisesti tietorakenteena, joka yleisesti tunnetaan DAGina (directed acyclic graph). Commitit ovat solmuja verkossa, ja se siitä. Joillakin solmuilla on erityinen nimi: haara (branch). Uudet commitit tehdään yleensä johonkin haaraan, jolloin haaran nimilappu etenee juuri commitattuun solmuun.

Tässä komentorivityökaluja joilla pääsee alkuun, joista kaikille on toki vielä N parametria, googlaa toki lisää tai yritä tajuta manpageja (haha):

Lopuksi vielä käteviä aliaksia konffeihin helpottamaan elämää:

git config --global alias.st status
git config --global alias.co checkout
git config --global alias.df diff
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.sh show
git config --global alias.cp cherry-pick
git config --global alias.lol 'log --graph --decorate --pretty=oneline --abbrev-commit --all'
git config --global pull.rebase true
git config --global core.editor vim

Jatkolukemista innokkaille:

1 kommentti

Oma kommenttisi

Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.

Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.

Hölmöt kommentit saatetaan moderoida pois jälkikäteen.

Nimimerkki:

Spammibottiesto: Mikä on kahdeksan ja kahdeksan summa? (vastaus numeroina)