# Gitin käytöstä, branchit
## Workflow
### 0. Status
git status -komennolla näet minkä branchin kanssa työskentelet ja sen tilan. Kuvan tapauksessa on käytössä master-branch.

### 1. Pull
Haetaan master branchin uusin versio
```
git checkout master
git pull
```
Näin varmistetaan että omalla koneella on aina viimeisin versio sovelluksesta ennen oman työn aloittamista.

### 2. Checkout
Muutoksien tekeminen suoraan master branchiin ei ole ideaalia, jos (kun) koodareita on useita. Tämä johtaa helposti moniin ongelmiin. Vaan parempi tapa on se, että jokaista uutta ominaisuutta varten tehdään oma branch. Eli, kun aloitat työskentelyn, ***varmista että aktiivinen branch ei ole master branch***.
Vaihda omaan branchiisi:
```
git checkout OMA_BRANCH
```
Jos et vielä ole luonut omaa branchia, luodaan se ja checkoutataan siihen komennolla:
```
git checkout -b OMA_BRANCH
```
### 3. Muutoksien tekeminen
Nyt voi koodata :)
### 4. Staging
Kaikki uudet ja muutetut tiedostot siirretään staging-tilaan komennolla
```
git add .
```
Pisteen sijasta voit myös määritellä tiedostojen nimet, mutta tavallisesti halutaan kaikki tiedostot mukaan.
```
git add TIEDOSTON_NIMI
```
### 5. Commit
Tehdyt muutokset commitoidaan:
```
git commit -m "TÄHÄN COMMIT VIESTI"
```
### 6. Push
Commitoinnin jälkeen voit viedä (pushata) branchisi myös versionhallintaan. Tämä ei ole pakollista mutta suositeltua.
```
git push
```
Jos branch pushataan ensimmäistä kertaa niin tulostuu virheilmoitus, joka vinkkaa käyttämään komentoa:
```
git push --set-upstream origin BRANCHIN_NIMI
```
Kuvan esimerkissä tein testibranch -nimisen branchin, addasin, commitoin ja pushasin GitLabiin.

## 7. Merge
Kun työskentelet oman branchisi parissa ja master branchiin tulee päivitys, jonka muutokset haluat liittää myös omaan branchiisi:
Haetaan master branchin uusin versio
```
git checkout master
git pull
```
Tämän jälkeen voit yhdistää, eli mergettää master branchin muutokset omaan branchiisi
Vaihda omaan branchiisi
```
git checkout OMA_BRANCH
```
Yhdistä master branch omaan branchiisi
```
git merge master
```
Jos git ilmoittaa merge conflikteista, olet tällöin tehnyt muutoksia samoihin tiedostoihin joita oli muokattu myös master branchissa. Tässä tapauksessa selvitä confliktit Visual Studio Codessa.
## HUOM: package.json ja npm install
Kun package.json -tiedoston sisältö muuttuu (uusia kirjastoja lisätään projektiin tai vanhoja päivitetään), niin silloin täytyy ajaa komento
```
npm install
```
joka lataa ja asentaa/päivittää kaikki projektin tarvitsemat tiedostot node_modules -kansioon.