Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:verziokontroll:git:git_agak_hasznalata

< Git

A git ágak használata

Fejlesztési folyamat

Ebben a példában, egy van egy programunk, 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.
  • Tovább fejlesztjük devel1 ágon.
  • Közben jön egy javítási kérelem, amit megoldunk.
  • A változtatást beleolvasztjuk a devel1 ágba.

Master ágban fejlesztés

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>
git init
git add index.html
git commit -m 'Kezdés'

Hozzáadjuk az engedélyt:

+    <p>
+        Az e-mail cím csak a munkával kapcsolatos 
+        kommunikációra használható.
+    </p>
git add index.html
git commit -m 'Engedély hozzáadva'

Hozzáadjuk a szerzőt.

git add index.html
git commit -m 'Szerző hozzáadva'
$ 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.

Devel1 ág

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>
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:

  • 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:

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:

  • main
  • trunk
  • development

Forrás

oktatas/programozas/verziokontroll/git/git_agak_hasznalata.txt · Utolsó módosítás: 2021/10/14 17:49 szerkesztette: admin