Branch kezelés
Branch-ek létrehozása, váltása, merge-ölése és merge conflictek kezelése.
Branch kezelés (branch, checkout, switch, merge)
A branch-ek a Git egyik legerősebb funkciói: lehetővé teszik, hogy párhuzamosan dolgozzunk különböző funkciókon, anélkül hogy befolyásolnánk a stabil kódbázist.
git branch – branch-ek listázása és kezelése
Mit csinál: Listázza, létrehozza, törli vagy átnevezi a branch-eket.
# Lokális branch-ek listázása
git branch
# Összes branch (lokális + remote)
git branch -a
# Csak remote branch-ek
git branch -r
# Új branch létrehozása (de nem vált át rá)
git branch feature/user-profile
# Branch törlése (csak ha már be van mergelve)
git branch -d feature/old-feature
# Branch törlése kényszerrel (akkor is, ha nincs bemergelve)
git branch -D feature/abandoned-feature
# Branch átnevezése
git branch -m feature/old-name feature/new-namegit switch – branch váltás (modern)
Mit csinál: Átvált a megadott branch-re. Ez a git checkout újabb, egyértelműbb alternatívája branch-váltáshoz.
Mikor használjuk: Amikor másik branch-en akarunk dolgozni.
# Átváltás egy meglévő branch-re
git switch main
git switch develop
# Új branch létrehozása és átváltás rá egyszerre
git switch -c feature/new-feature
# Átváltás az előző branch-re
git switch -git checkout – sokoldalú parancs
Mit csinál: Régebbi, sokoldalú parancs, amely branch-et vált, fájlokat állít vissza, és detached HEAD állapotot hoz létre.
# Branch váltás (régebbi szintaxis)
git checkout main
# Új branch létrehozása és átváltás rá
git checkout -b feature/payment
# Egy fájl visszaállítása az utolsó commit állapotára
git checkout -- src/index.ts
# Egy korábbi commit megtekintése (detached HEAD)
git checkout a3f2c1dMegjegyzés: A Git 2.23 óta a
git switchésgit restoreparancsok ajánlottak agit checkoutegyes funkcióira, mivel egyértelműbben fejezik ki a szándékot.
git merge – branch-ek egyesítése
Mit csinál: Az aktuális branch-be beolvasztja a megadott branch változásait.
Mikor használjuk: Amikor egy feature branch elkészült, és be akarjuk integrálni a fő ágba.
# Átváltunk a célbranch-re
git switch main
# Beolvasztjuk a feature branch-et
git merge feature/user-profile
# Fast-forward merge letiltása (mindig merge commit keletkezik)
git merge --no-ff feature/user-profile
# Merge megszakítása ütközés esetén
git merge --abortMerge stratégiák:
- Fast-forward: Ha a cél branch nem divergált, Git egyszerűen előrébb tolja a mutatót. Nincs merge commit.
- Merge commit (--no-ff): Mindig keletkezik egy merge commit, amely megőrzi a branch struktúráját.
- Squash merge: Az összes commit egyetlen commitba összepréselhető:
git merge --squash feature/my-feature
git commit -m "feat: add my feature"Merge ütközések (conflict) feloldása
Ha két branch ugyanazt a sort módosította, Git nem tudja automatikusan eldönteni, melyik a helyes. Ilyenkor merge conflict keletkezik.
# Git jelzi az ütközést
git merge feature/conflicting-branch
# CONFLICT (content): Merge conflict in src/utils.ts
# Automatic merge failed; fix conflicts and then commit the result.
# A fájlban ütközésjelzők jelennek meg:
# <<<<<<< HEAD
# const timeout = 3000;
# =======
# const timeout = 5000;
# >>>>>>> feature/conflicting-branch
# Megoldjuk kézzel a fájlban, majd:
git add src/utils.ts
git commitRövid összefoglaló
git branch– branch-ek listázása, létrehozása, törlése.git switch -c <branch>– új branch létrehozása és átváltás rá (modern).git merge– branch beolvasztása;--no-ffmegőrzi a branch struktúráját.- Merge conflict esetén manuálisan javítjuk a fájlt, majd
git add+git commit. - Dolgozz mindig feature branch-eken, ne közvetlenül a
mainbranch-en.