Git-ohjeet
Hyödyllisiä linkkejä
- Most Basic Git Commands with Examples: pitkä ja kattava perusteiden opas
- How to Write a Git Commit Message
- Official Git Documentation
Gitin käyttö projektissa
Työskentely perustuu seuraavaan toimintamalliin: a successful Git branching model.
Development-branchiin mergetään kaikki kehitysvaiheen muutokset. Kun development-branchin muutokset on yhdessä todettu hyviksi ja toimiviksi, se mergetään masteriin, joka on lopullinen, julkaisukelpoinen versio projektista.
Development-branch jaetaan tarpeen mukaan feature-brancheihin. Brancheja mergetään säännöllisesti developmentiin, jotta ajan tasalla olevat versiot ovat helposti eri kehitystiimien saatavilla.
Gitin konfigurointi
Määritä Gittiin sama käyttäjätunnus ja sähköposti kuin GitLabissa. Tiedot näkyvät jokaisen tekemäsi commitin yhteydessä.
Avaa komentorivi ja tarkista Gittiin määritetyt käyttäjätiedot:
$ git config --global --list
Päivitä käyttäjätietoja:
$ git config --global user.name "[name]"
$ git config --global user.email "[email address]"
Työskentelyn aloittaminen
Siirry haluamaasi kansioon ja kloonaa projektin repositorio komennolla git clone [url]
:
$ cd your/development/folder
$ git clone https://gitlab.labranet.jamk.fi/path/to/repository.git
Siirry projektikansioon ja asenna tarvittavat moduulit:
$ npm install
Yleiset komennot
Näe nykyisen edistymisesi tila – missä branchissa olet, mitä tiedostoja on muokattu, mitä on lisätty staging-tilaan, missä mennään:
$ git status
Git add
Staging on eräänlainen välitila, jossa muutokset odottavat committiin paketointia.
Lisää yksi tai useampi työstämäsi tiedosto staging-tilaan:
$ git add [index.html] [styles.css]
Voit myös lisätä kaikki muutokset kaikista kansioista staging-tilaan komennolla:
$ git add .
Git commit
Luo staging-tilassa olevista muutoksista commit ja lisää siihen lyhyt ja ytimekäs kuvaus:
$ git commit -m "[descriptive message]"
Commit-viestien tulee olla:
- Selkeitä ja kuvaavia, jotta projektin ulkopuolisetkin ymmärtävät, mitä commitissa tapahtuu
- Pituudeltaan mielellään noin 50, enintään 72 merkkiä. Jos commitin muutokset eivät ole itsestäänselviä, commit-viestiin on mahdollista lisätä pidempi kuvaus (kts. ohje)
- Aloitettu isolla kirjaimella ja verbillä käskymuodossa, ilman lopetuspistettä. "Fix spacing in search results", "Add styling to TreeNode component", "Improve footer icons". Tämä noudattaa Gitin generoimien committien kieliasua ja helpottaa commit-historian lukemista.
Massiivisen kokoisia committeja tulisi välttää ja pyrkiä committaamaan jokainen toiminto erikseen. Pienetkin muutokset viedään muille ryhmäläisille mahdollisimman aikaisessa vaiheessa, jotta vältytään konflikteilta. Erilaisia muutoksia voi oman harkinnan mukaan niputtaa samaan committiin, esimerkiksi ”Improve readability”, jossa on useampi typografiamuutos samassa.
Muokkaa viimeisimmän local commitin viestiä:
$ git commit --amend
amend
-komento avaa VS Codessa editorin, jossa voit tarvittaessa lisätä committiin myös pidemmän kuvauksen.
Tarkastele kätevästi branchin commit-historiaa:
$ git log --oneline -n 5
-n
-tagilla voidaan rajoittaa näytettävien committien määrää.
Git pull
Hae tiedot remoteen tehdyistä muutoksista ja yhdistä muutokset lokaaliin repositorioosi. Aiheesta löytyy hyödyllistä lisätietoa täältä.
$ git pull
Jos et ole varma pullaamisesta, voit pelkästään hakea tiedot kaikista remoten brancheihin tehdyistä muutoksista:
$ git fetch
Tämän jälkeen git status
-komento antaa ajantasaisen tiedon siitä, onko remotessa uusia committeja.
Git push
Pushaa eli ”työnnä” muutokset remoteen muiden nähtäville ja työstettäväksi:
$ git push origin [branch]
Voit helpottaa pushaamista ajamalla seuraavan komennon:
$ git push -u origin HEAD
-u
-tagi asettaa git push
-komennolle oletuskohteeksi HEAD (eli branchin, jossa milloinkin olet).
Seuraavan kerran pushatessa riittääkin siis pelkästään:
$ git push
Branch-workflow
Branchin luominen
Seuraavalla komennolla näet mitä brancheja on tällä hetkellä saatavilla ja missä olet:
$ git branch
Siirry branchiin, josta haluat luoda uuden branchin ja varmista että se on ajan tasalla:
$ git checkout [branch]
$ git pull
Näin luot uuden branchin ja siirryt sinne:
$ git checkout -b [branchname]
Voit aina tarkistaa missä branchissa olet komennolla git status
.
Branchien mergeäminen
Siirry esim. development
-branchiin ja hae branchin uusin versio:
$ git checkout development
$ git pull
Sitten mergeä haluamasi branch development
iin:
$ git merge [branchname]
Nyt voit siirtyä alkuperäiseen, mergettyyn branchiin takaisin:
$ git checkout [branchname]
Tai voit poistaa branchin, jos sitä ei enää tarvitse. Poista branch lokaalisti:
$ git branch -d [branchname]
Poista branch myös remote reposta:
$ git push origin --delete [branchname]
Pidä branchit ajan tasalla
Hae lokaaliin repositorioosi development
-branchin uusin versio:
$ git checkout development
$ git pull
Siirry päivitystä kaipaavaan branchiin, pullaa tarvittaessa myös sen uusimmat muutokset remotesta ja mergeä sitten development
siihen:
$ git checkout frontend
$ git pull
$ git merge development
Työnnä vielä ajan tasalle päivitetty branch remoteen:
$ git push
Ongelmatilanteet
Merge conflict
Yleensä merge conflict on helppo selvittää. Merge conflictin tullessa tärkeintä on selvittää mitä tiedostoja on muokattu ja mikä muokkaus on uusin. Muuttuneet tiedostot saa näkyviin tuttuun tapaan git status
.
Katso conflictaavat tiedostot ja etsi tiedostosta rivit ”<<<<<<<< [branch]", jotka osoittavat, mistä muutos alkaa ja mihin se päättyy. Tee korjaukset ja poista "<<<<<<<<" -kommentit. Lisää korjatut tiedostot staging-tilaan (git add –A
), committaa ne (git commit
) ja pushaa ne (git push
). Tämän jälkeen kaikki on kunnossa ja merge on tehty onnistuneesti.
Korjaa viimeisintä local committia
Unohtuiko commitista jokin muutos? Onko commitin viestissä virhe? Jos et pushannut muutoksia vielä remoteen, voit korjata asian.
Lisää tarvittavat muutokset staging-tilaan:
$ git add [index.html]
Lisää staging-tilan muutokset tuoreimpaan committiin:
$ git commit --amend
Komento avaa editorin, jossa voit vielä muokata commitin viestiä.
Tiedoston .gitignoraaminen
Kun .gitignorea päivitetään, .gitignore osaa ignorata vain tiedostot, joita ei ole aiemmin commitattu osaksi repositoriota. Tiedosto poistetaan repositoriosta (mutta säilytetään lokaalissa tiedostojärjestelmässä) komennolla:
$ git rm -r --cached [filepath]