[[oktatas:programozás:verziókontroll:git|< Git]] ====== A git ágak használata ====== * **Szerző:** Sallai András * Copyright (c) 2020, Sallai András * Szerkesztve: 2020, 2021, 2022 * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Fejlesztési folyamat ===== Ebben a példában, van egy mikro projektünk, amit a master ágon fejlesztettünk, ennek eredménye három commit. A továbbfejlesztést egy **devel1 ágon** folytatjuk. A devel1 ág fejlesztése közben, felmerül egy apró hiba a master ágon fejlesztett programban. Készítünk egy **hotfix ágat**, ahol javítjuk a hibát, majd a javítást beolvasztjuk master ágba. A javítás, jó lenne ha szerepelne a devel1 ágon is, ezért a master ágat beolvasztjuk a devel1 ágba. A lépések, pontokba szedve: * A master ágon fejlesztünk egy weblapot, 3 commit az eredmény. * Tovább fejlesztjük devel1 ágon. Már van 2 commit. * Közben jön egy javítási kérelem, amit megoldunk. * A változtatást beleolvasztjuk a devel1 ágba. Kövessük az ábrán a lépéseket: {{:oktatas:programozas:verziokontroll:branches_pelda_01.png|}} ===== Master ágban fejlesztés ===== Lássuk a gyakorlatban. Készítsünk a példának egy index.html weblapot. E-mail

E-mail hírdetése

janos@zold.lan

Megkezdtük a fejlesztést, elkészítjük az első pillanatképet: git init git add index.html git commit -m 'Kezdés' Tovább fejlesztjük a weblapunkat, hozzáadjuk az engedélyt: +

+ Az e-mail cím csak a munkával kapcsolatos + kommunikációra használható. +

A projektről megint készítünk egy pillanatképet. git add index.html git commit -m 'Engedély hozzáadva' A projektünkben a weblaphoz, hozzáadjuk a szerzőt. +
+ Szerző: Nagy János +
Pillanatképet készítünk: git add index.html git commit -m 'Szerző hozzáadva' Nézzük meg, hogyan haladt a fejlesztés: $ git log --oneline 8cf72cc (HEAD -> master) Szerző hozzáadva 525fd21 Engedély hozzáadása 00f269a Kezdés {{:oktatas:programozas:verziokontroll:hasznalat_01.png|}} ^ commit ^^^ | első | második | harmadik | | 00f26 | 525fd | 8cf72 | Az első commit a **00f26**. A második commit **525fd**, vissza mutat az első commit-ra. A harmadik **8cf72** commit is vissza mutat a második commit-ra. ===== A devel1 ág ===== A további fejlesztést egy devel1 nevű ágon végezzük. Ehhez létrehozzuk az ágat, majd váltunk a devel1 ágra. git branch devel1 git checkout devel1 Készítünk egy terkepek.html nevű fájlt: Térképek

Térképek

A térképek csak belső használatra elérhetők.

git add index.html git commit -m 'Térképfájl megírva' Tovább fejlesztjük: Térképek

Térképek

A térképek csak belső használatra elérhetők.

Szerző: Nagy János

Tároljuk a devel1 ágon a munkánkat: git add index.html git commit -m 'Szerző a térképfájlhoz adva' {{:oktatas:programozas:verziokontroll:hasznalat_02.png|}} ===== Hotfix ág ===== Most szólnak, hogy javítani kell az e-mail címet. Készítünk egy hotfixágat. git checkout master git checkout -b hotfix Javítom az e-mail címet: E-mail

E-mail hírdetése

nagy.janos@zold.lan

{{:oktatas:programozas:verziokontroll:hasznalat_03.png|}} Ellenőrizzük: git log --oneline --graph --all {{:oktatas:programozas:verziokontroll:check_hotfix.png|}} Most olvasszuk be hotfixet a master ágba. git checkout master git merge hotfix A git merge kimenete: $ git merge hotfix Updating 8cf72cc..ef2172d Fast-forward index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) A git log --oneline --graph --all eredménye: {{:oktatas:programozas:verziokontroll:hotfix_master_merge.png|}} Gitk-val: {{:oktatas:programozas:verziokontroll:hotfix_master_merge_gitk.png|}} Az összefésülés gyakorlatban: $ git merge hotfix Updating 8cf72cc..ef2172d Fast-forward index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) $ Ellenőrizzük: git log --oneline --graph --all Vagy gitk alkalmazással: gitk --all {{:oktatas:programozas:verziokontroll:hasznalat_04.png|}} A master és a hotfix ugyanarra a pillanatképre mutat. Ezért törölhetjük a hotfixet. $ git branch -d hotfix Deleted branch hotfix (was ef2172d). Kimenet és ellenőrzés képen: {{:oktatas:programozas:verziokontroll:delete_branch_log.png|}} {{:oktatas:programozas:verziokontroll:hasznalat_05.png|}} ===== A devel1 ág továbbfejlesztése ===== Most már visszatérhetünk a devel1 fejlesztésünkhöz. git checkout devel1 A master ágban viszont van egy változás, ami nincs benne a devel1 ágban. Két lehetőségünk van: * belefésülöm a master ágat a devel1 ágba * várok, amíg vége nem lesz a devel1 ág fejlesztésének, majd összefésülöm git merge master A parancs kimenete: $ git merge master Merge made by the 'recursive' strategy. index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) Nézzük meg az eredményt: git log --online --graph --all A képen a lehetséges kimenet: {{:oktatas:programozas:verziokontroll:master_devel1_merge.png|}} {{:oktatas:programozas:verziokontroll:hasznalat_06.png|}} ===== Főág ===== Az alapértelmezett főág beállítása: git config --global init.defaultBranch Ha a master helyett más főágnevet választ valaki, általában ezek szoktak lenni: * main * trunk * development ===== Forrás ===== * https://git-scm.com/book/en/v2/Git-Branching-Basic-Branching-and-Merging (2020)