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:
Kövessük az ábrán a lépéseket:
Lássuk a gyakorlatban. Készítsünk a példának egy index.html weblapot.
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>E-mail</title> </head> <body> <h1>E-mail hírdetése</h1> <p> <a href="janos@zold.lan">janos@zold.lan</a> </p> </body> </html>
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:
+ <p> + Az e-mail cím csak a munkával kapcsolatos + kommunikációra használható. + </p>
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.
+ <div> + Szerző: Nagy János + </div>
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
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 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:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Térképek</title> </head> <body> <h1>Térképek</h1> <p> A térképek csak belső használatra elérhetők. </p> </body> </html>
git add index.html git commit -m 'Térképfájl megírva'
Tovább fejlesztjük:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Térképek</title> </head> <body> <h1>Térképek</h1> <p> A térképek csak belső használatra elérhetők. </p> <p> Szerző: Nagy János </p> </body> </html>
Tároljuk a devel1 ágon a munkánkat:
git add index.html git commit -m 'Szerző a térképfájlhoz adva'
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:
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>E-mail</title> </head> <body> <h1>E-mail hírdetése</h1> <p> <a href="nagy.janos@zold.lan">nagy.janos@zold.lan</a> </p> </body> </html>
Ellenőrizzük:
git log --oneline --graph --all
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:
Gitk-val:
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
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:
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:
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:
Az alapértelmezett főág beállítása:
git config --global init.defaultBranch <name>
Ha a master helyett más főágnevet választ valaki, általában ezek szoktak lenni: