[[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)