Learning
Git CLI

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

git 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 a3f2c1d

Megjegyzés: A Git 2.23 óta a git switch és git restore parancsok ajánlottak a git checkout egyes 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 --abort

Merge 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 commit

Rö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-ff megő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 main branch-en.

On this page