Git
Gitin käyttö ryhmässä (GitHub Flow)

Kehitystiimeissä on melko yleistä, että tiimi välttää (tai jopa estää) puskemisen suoraan päähaaraan. Ajatuksena on, että ennen kuin yksi kehittäjä voi lisätä koodinsa päähaaraan, tiimi tarkistaa koodin ja joko hyväksyy tai kieltää sen yhdistämisen päähaaraan. Tarkoituksena on pitää päähaara puhtaana bugeista.

Pull request

Kun kehittäjät alkavat lisämään uusia ominaisuuksia, he luovat uuden haaran (branch). Sitten he puskevat GitHubiin kyseisen haaran melko usein (esimerkiksi kerran päivässä). Ja kun ominaisuus on valmis, se halutaan yhdistää päähaaraan(main). Mutta sen sijaan, että he yhdistäisivät sen itse, he luovat Pull requestin GitHubissa. Sitten tiimi tarkistaa koodin ja päättää, hyväksyykö se pyynnön vai ei. Jos he hyväksyvät, joku heistä yhdistää haaran päähaaraan. Tämän jälkeen jokaisen jäsenen tulee vetää uusin main-versio paikalliseen repoonsa ja sitten yhdistää main-versio haaraan, jonka kanssa he työskentelevät tällä hetkellä.

Kehittäjä voi myös päättää, että hylkää koko branchin. Tällöin hän ei tee Pull requestia.

Jos haluat tehdä Pull requestin GitHubissa, sinun tulee valita valikosta Pull request, jolloin saat seuraavan näkymän

Kun klikkaat painiketta New pull request, saat seuraavan näkymän

Ja nyt kannattaa tarkistaa, että nuoli osoittaa oikeaan suuntaan

Pull requestin käsittely

Kun joku muu ryhmässäsi kirjautuu sisään GitHubiin, hän näkee Pull requestin. Ja sitten heidän pitäisi tehdä tämä

  1. Avaa Pull request
  2. Klikkaa "Add your review"
  3. Approve or Request changes
  4. Jos hän ei hyväksy koodia, hänen tulee kirjoittaa kommentti.
  5. Jos hän hyväksyy pyynnön, hän klikkaa "Merge pull request".
  6. Ja sitten hän klikkaa "Confirm merge""
Nyt hänen tulee ilmoittaa kaikille tiimin jäsenille, että heidän tulee vetää uusin päähaara.

Mergen jälkeen

Oletetaan, että työskentelet beaver-nimisen haaran kanssa ja kuulet, että main on päivitetty. Silloin sinun pitäisi tehdä näin:

  1. git add .
  2. git commit -m "commit in beaver"
  3. git checkout main
  4. git pull origin main
  5. git checkout beaver
  6. git merge main
Sitten voit jatkaa työtäsi beaver branchissä. Mutta jos tässä vaiheessa syntyy konflikti, se on ratkaistava.

Conflict
Git konflikti voi syntyä:
  1. PAIKALLISESTI: Main-haara on päivitetty GitHubiin, ja haet uusimmat muutokset paikallisesti git pull -komennolla. Tämän jälkeen yhdistät mainin muutokset omaan haaraasi (branch) komennolla git merge main. Yhdistämisen yhteydessä syntyy merge-konflikti, koska jossakin tiedostossa on tehty muokkaus, joka poikkeaa sinun haarassasi olevasta versiosta samalla rivillä.
  2. GITHUBISSA: Main-haara on päivittynyt jonkin toisen Pull Requestin myötä. Tämän jälkeen toinen kehittäjä työntää oman branchinsa (push), mutta hänen haaransa perustuu vanhempaan versioon mainista. Kun hänen branchiaan yritetään yhdistää (merge) takaisin mainiin, Git ei välttämättä pysty yhdistämään muutoksia automaattisesti – ja seurauksena voi olla merge-konflikti, jos samoja kohtia tiedostoissa on muokattu eri tavalla.

Oletetaan, että beaver branchissä tiedostossa test.php rivi 3 on tällainen:

echo 'Tervetuloa Jim';
Ja vedit uuden main version, jossa rivi 3 on tällainen:
echo "Tervetuloa Ann";
Joten kun suoritat komennon git merge main, saat virheilmoituksen:
Auto-merging test.php
CONFLICT (content): Merge conflict in test.php
Automatic merge failed; fix conflicts and then commit the result.
Ja kun avaat tiedoston test.php, näet seuraavan:
<<<<<<< HEAD
echo 'Welcome Jim'; in beaver
=======
echo 'Welcome Ann'; in login_system

>>>>>>> main
Nyt sinun on muokattava tiedostoa. Ja päätät muokata sen seuaavanlaiseksi:
echo 'Welcome Ann and Jim';
Eli siis edellinen korvaa kaiken mitä oli näiden rivien välissä
<<<<<<< HEAD

>>>>>>> main
Sitten suoritat seuraavat komennot:
  1. git add .
  2. git commit -m "conflict fixed"
Ja sitten voit jatkaa työskentelyä branchissä beaver.

Projektin käynnistäminen

Yksi tiimin jäsen alustaa projektin ja kaikki jäsenet kloonaavat repon. Ja sitten jokainen luo oman branchin.

Työn eteneminen

Kun alat tehdä sovellukseen uutta "ominaisuutta", luo uusi branch.

  1. Kommitoit usein ja pusket branchin silloin tällöin
  2. Jos saat uuden ominaisuuden toteutettua toimivasti, luot Pull Requestin
  3. Ryhmä tarkistaa koodisi
  4. Jos ryhmä hyväksyy koodin, se yhdistetään mainiin. Muuten sinun on korjattava jotain ja luotava sen jälkeen uusi PullRequest
  5. Jos ryhmä teki mergen, sinun tulee siirtyä mainiin ja suorittaa komento git pull origin main saadaksesi uusimman main version.
  6. Jos aiot tehdä toisen ominaisuuden, luot jälleen uuden branchin
  7. jne ....
Voit katsoa aiheeseen liittyvät ohjevideot sivulta
https://www.youtube.com/playlist?list=PLWl0bS7jZq9-a6ST5XMSPgfUeU7tXdunP

Alla olevassa kaavioissa on esitetty työskentelyn vaiheet



Toggle Menu