Yleistä:
- Git on hajautettu versionhallinta
- https://en.wikipedia.org/wiki/Version_control#Distributed_revision_control
- Kokeile ja opi git komentoja : https://try.github.io/
Työkalujen lataus:
- https://git-scm.com/download/ -- Käyttäjän asetukset tehdään yleensä globaaleina "git config --global " https://git-scm.com/book/en/v2/Getting-Started-First-Time-Git-Setup
- Hyviä työkaluja komentorivillä ja sen tueksi : -- "git status" -- "git gui" -- "gitk" ja "gitk --all" -- "git help " esim. "git help checkout"
- Git bash tuki eli terminaalin-prompt:ssa lukee ja '' mikäli local-repository on 'dirty' -- esim. "santeri:~/projects/hubble/git-tests (master)$ -- git aware prompt : https://github.com/jimeh/git-aware-prompt --- ohje kaksi osainen : https://github.com/jimeh/git-aware-prompt#installation + https://github.com/jimeh/git-aware-prompt#suggested-prompts -- lisää vastaavanlaisia skriptejä löytyy mm. git contrib:sta : kuten https://github.com/git/git/blob/master/contrib/completion/git-completion.bash
- Kokeilemisen arvoinen työkalu (jossa "git gui" + "gitk" ominaisuudet) (ei näytetty) : https://www.gitkraken.com/
- .gitignore tiedoston luomiseen apuja : https://github.com/github/gitignore
- ./.git hakemistoon ei ole yleensä mitään asiaa sitä varten on työkalut -- esim. "git config user.email johndoe@example.com" lisää käyttäjän emailin ./.git/config tiedostoon -- esim. "git remote add production ../remote" lisää remoten nimeltä "production" ./.git/config tiedostoon
Git xFS (erilaisia git laajennuksia/muutoksia)
- Näistä kerrottiin liittyen (isoihin tiedostoihin, isoihin repositoryihin, tiedostojen automaattiseen 'versiointiin')
- Kohtalaisen kokoisia binaari-tiedostoja gitissä? Ei hyvä tapa tai sitten https://git-lfs.github.com/
- Repositoryn cloonaus kestää päivän ja isot tiedostot eivät ole ongelma? OnDemand tiedostojen lataus : https://github.com/Microsoft/GVFS
- Automaattinen tiedostojen versiointi : https://www.presslabs.com/gitfs/
Git-Repositoryt
- Muistetaan Local ja Remote Repositoryn ero! (remote ei välttämättä tarkoita että git push ja git pull komennot tehdään verkon yli) -- eli Remote voi osoittaa yhtä hyvin toiseen kansioon/levy-osioon -- "git init --bare" ja "git clone --bare" ovat ikäänkuin vain RemoteRepositoryn osoittimia ilman aktiivista Local Repositorya
- Yleensä Remote Repositoryt osoittavat johonkin keskitettyyn palveluun kuten -- https://bitbucket.org (löytyy myös omalle koneelle asennettava versio) -- https://gitlab.com (löytyy myös omalle koneelle tai vaikka RPiv2:een asennettava versio) -- https://github.com
- Mainittiin että github.com on avoimille projekteille hyvä vaihtoehto
- Mainittiin että bitbucket.org tarjoaa "Unlimited" privaatteja repositoryja (ilmainen alle 5:n hengen tiimille)
- Lyhyesti mainittiin että on olessa muitakin palvelun tarjoajia
Git CheatSheettejä (tulosta / bookmarkkaa)
- esim. https://devhints.io/?q=git ja https://devhints.io/git-tricks
- Hae googlesta "git cheatsheet" ja muokkaa/kirjoita itselle ylös oma mieluisesi
Git Hook esimerkki:
- Server-side hook demo, kokeile: https://gist.github.com/santeriv/a1a90d3c48079d8a272f487e5606c4a1
- Perustuu git hookkeihin : https://git-scm.com/book/gr/v2/Customizing-Git-Git-Hooks
Git perus workflow ennen kuin commitoit ja pushaat muutokset muille
- Haluat tehdä muutoksesi omassa "taski"-branchissa ja unohdit checkoutata heti oman branchin nimeltä "taski" ennen työn aloittamista
git stash
git checkout -b taski
git pull origin master
git stash pop
git gui (lisää haluamasi tiedostot/muutokset committiin (staged vihreä alue) ja kirjoita commit viesti ja paina commit)
git push origin taski:master (eli <source-branch>:<target-branch>)
- Nyt jos olet pushannut muutoksesi jo master iin et välttämättä tarvitse enää taski-branchiasi voit poistaa sen jos haluat -- huom. et voi olla samassa branchissa kun poistaa lokaalin branchin. "gitk --all" :lla näet oman kommittisi master:ssa
git checkout master
gitk --all
git pull
gitk --all
git branch -D taski
gitk --all
- netistä löytyy lisää hakemalla "git workflow" löytyy jopa oma git-työkalu workflow:lle nimeltä "git flow"
- Tee muistiinpanoja itsellesi tärkeistä kommenoista!
Muuta:
- git rebase:n käyttöä ei käsitelty. Siitä varoitettiin ja muistutettiin että ilman sitäkin usein selviää
- git rebase:lla siis pystyy muokkaamaan jo olemassa olevia committeja (varsinkin jo pushattujen committien muokkaaminen on lähtökohtaisesti aina väärin)
- git push --force yhdistettynä git rebasen käyttöön harvemmin on hyvä idea
Hyvä valinta tällaisten miittingien avausaiheeksi, olisinpa ollut mukana.
Ehdotus seuraavaksi aiheeksi: GraphQL, eli API:en lähitulevaisuus.