Tartalomjegyzék

< Git

A git ágak használata

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:

Kövessük az ábrán a lépéseket:

Master ágban fejlesztés

Lássuk a gyakorlatban. Készítsünk a példának egy index.html weblapot.

index.html
<!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 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:

terkepek.html
<!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:

terkepek.html
<!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'

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:

index.html
<!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:

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:

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:

Főág

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:

Forrás