[[oktatas:programozás:verziókontroll:git|< Git]]
====== A git hatékony használata ======
* **Szerző:** Sallai András
* Copyright (c) 2020, Sallai András
* Szerkesztve: 2020, 2022, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]]
* Web: https://szit.hu
===== Előfeltevések =====
Négy ember fog dolgozni a projekten:
* János -- projekt vezető
* Mari -- fejlesztő
* Kati -- fejlesztő
* Béla -- fejlesztő
===== Fejlesztési folyamat =====
Kezdésnek, a **master** ágból létrehozunk egy **release** vagy egy **dev** nevű ágat.
A fejlesztők ebből ágaztatják el saját munkájukat.
A fejlesztő a következő feladattípusokból választhat:
* feature
* enhance
* cleanup
* refactor
* fix -- javítás
* hotfix -- sürgős javítás
Ezeket szerepeltetjük az ág nevében, de hozzáadjuk az aktuális munkát leíró nevet is. A következő két ábrán ennek két példáját láthatjuk.
{{:oktatas:programozas:verziokontroll:trianglebranches.png|}}
Ugyanaz más nevekkel:
{{:oktatas:programozas:verziokontroll:trianglebranches_02.png|}}
==== Master branch ====
* A master branch-be senki nem ír kódot.
* Ez csak egy másolat arról a kódról, ami termékként ki van adva.
* A projekt vezető sem ír a master branchbe.
* Mindenki máshol írja az aktuális kódot.
==== Release branch ====
* A master branch-ből készítünk egy release branch-et.
* Minden kód itt lesz.
* A release branch-ben a release csak egy prefix, amit release/ formában használunk.
* Legyen példul release/triangle
* Előfordulhat, hogy azonos kódbázison több projekt is fut. Ezért használjuk release/ prefixumot
==== Funkció branch ====
* Az alkalmazásba épített minden szolgáltatás egy funkcióként van megvalósítva.
* A funkció branch olyan mint a többi, de feature/ formában használjuk.
* János megkéri Bélát,
* hozzon létre egy osztályt, ami képes egy háromszög adatait tárolni.
* feature/store
* János megkéri Marit,
* hozzon létre egy Triangle osztályt, amely kiszámolja egy háromszög kerületét.
* feature/triangle
* János megkéri Katit,
* írjon tesztet, amely Béla és Mari osztályához.
* feature/test
* Béla befejezte a feature/store-t, akkor elküldi a kódját a release/triangle branch-be.
* Béla pull request kérést intéz.
==== Pull request ====
A pull request fogalmat a github webes felületén vezették be.
* A Pull request nem tévesztendő össze a git pull paranccsal.
* A fejlesztő nem tudja közvetlenül a kiadási ágba küldeni a kódot.
* A műszaki vezetőnek (vezető fejlesztő) felül kell vizsgálnia a kódot, mielőtt a release ágba kerül.
* A technikai ellenőrzés után, a műszaki vezető beolvasztja a kódot a release ágba.
* Ha minden funkció kész, akkor összeolvasztásra kerülnek, majd mehet a master ágba.
===== Kezdés =====
{{:oktatas:programozas:verziokontroll:hatekony_01.png|}}
A touch parancs unix alapú rendszereken, Windowson pedig Git Bash-ben áll
rendelkezésre.
Készítsünk egy állományt kezdésnek:
touch main.c
Ha az adott gépen nincs touch parancs, bármivel létrehozhatjuk az állományt.
Készítsük el a git tárolót és a kezdő commitot.
git init
git add main.c
git commit -m "Kezdés"
A master ágban minimum egy commit-nak lennie kell, mielőtt létrehozunk egy új branchet.
===== Release ág =====
Hozzuk létre a release ágat, majd álljunk át.
{{:oktatas:programozas:verziokontroll:hatekony_02.png|}}
git branch release/triangle
git checkout release/triangle
Hozzunk létre egy kezdő állományt és commitot:
touch store.c
git add store.c
git commit -m "A store.c létrehozva"
===== Feature ág =====
{{:oktatas:programozas:verziokontroll:hatekony_04.png|}}
git branch feature/store
git checkout feature/store
{{:oktatas:programozas:verziokontroll:hatekony_05.png|}}
nano store.c
git add store.c
git commit -m 'A store() függvény kész'
===== Forrás =====
* https://www.freecodecamp.org/news/how-to-use-git-efficiently-54320a236369/ (2020)