Learning
Git CLI

Haladó Git parancsok

stash, rebase, cherry-pick, bisect és interaktív rebase haladó workflow-khoz.

Haladó parancsok (stash, rebase)

git stash – változások ideiglenes félretétele

Mit csinál: Elmenti a jelenlegi, stage-elt és nem stage-elt változásokat, majd visszaállítja a working directory-t a tiszta állapotba. Hasznos, ha gyorsan branch-et kell váltani anélkül, hogy commitálnánk a félkész munkát.

# Aktuális változások félretétele
git stash

# Félretétel üzenettel
git stash push -m "WIP: login form validation"

# Stash-ek listázása
git stash list

# Legutóbbi stash visszaállítása (és törlése a listából)
git stash pop

# Egy adott stash visszaállítása (törlés nélkül)
git stash apply stash@{2}

# Stash tartalmának megtekintése
git stash show -p stash@{0}

# Stash törlése
git stash drop stash@{0}

# Összes stash törlése
git stash clear

# Új branch létrehozása a stash tartalmával
git stash branch feature/saved-work stash@{0}

git rebase – commit history átírása

Mit csinál: Egy branch commit sorozatát áthelyezi egy másik base commitra. Lineárisabb, olvashatóbb historyt eredményez.

Mikor használjuk: Feature branch-ek frissítésekor (ahelyett, hogy merge-ölnénk a main-t bele), és a push előtti history szépítésekor.

# Feature branch frissítése a main alapján
git switch feature/my-feature
git rebase main

# Interaktív rebase: az utolsó 3 commit módosítása
git rebase -i HEAD~3

# Rebase megszakítása ütközés esetén
git rebase --abort

# Ütközés feloldása után folytatás
git rebase --continue

# Egy commit kihagyása rebase közben
git rebase --skip

Interaktív rebase – commit history szépítése

Az git rebase -i az egyik leghatékonyabb eszköz a history szépítéséhez, mielőtt feltöltjük a kódot.

git rebase -i HEAD~4

Ez megnyit egy szerkesztőt, amelyben a commitok sorrendbe vannak rendezve:

pick a1b2c3d feat: add login form
pick b2c3d4e fix: typo in login
pick c3d4e5f fix: another typo
pick d4e5f6g feat: add logout button

# Parancsok:
# p, pick   = megtartja a commitot
# r, reword = megtartja, de szerkeszti az üzenetet
# e, edit   = megállít a commitnál szerkesztéshez
# s, squash = az előző commitba olvasztja
# f, fixup  = squash, de az üzenetet elveti
# d, drop   = törli a commitot

Példa: a két "typo" fixet a login commitba préselünk:

pick a1b2c3d feat: add login form
fixup b2c3d4e fix: typo in login
fixup c3d4e5f fix: another typo
pick d4e5f6g feat: add logout button

Rebase vs Merge

SzempontMergeRebase
Historymegőrzi a branch struktúrátlineáris, "tiszta"
Merge commitigen (--no-ff esetén)nem
History biztonságnem írja átátírja
Konfliktusegyszerminden commitnál
Ajánlottmain-be mergeléskorfeature branch frissítésekor

git cherry-pick – egyedi commit átvétele

Mit csinál: Egy adott commitot átvesz egy másik branch-ről az aktuálisra.

# Egyetlen commit átvétele
git cherry-pick a3f2c1d

# Több commit átvétele
git cherry-pick a3f2c1d b7e9f2a

# Commit üzenet módosítással
git cherry-pick -e a3f2c1d

git bisect – hibás commit megkeresése

Mit csinál: Bináris keresés segítségével megtalálja azt a commitot, amely egy hibát bevezetett.

git bisect start
git bisect bad                  # az aktuális állapot hibás
git bisect good a3f2c1d        # ez a commit még jó volt

# Git automatikusan checkout-ol commitokat
# Jelöljük meg minden alkalommal:
git bisect good   # ha a jelenlegi commit még jó
git bisect bad    # ha a jelenlegi commit már rossz

# Git megtalálja a hibás commitot
# Végén:
git bisect reset

Rövid összefoglaló

  • git stash – félreteszi a félkész munkát; pop visszaállítja.
  • git rebase main – frissíti a feature branch-et merge commit nélkül.
  • git rebase -i HEAD~N – interaktív history szépítés: squash, fixup, reorder.
  • git cherry-pick – egyedi commit átvétele másik branch-ről.
  • git bisect – bináris kereséssel megtalálja a hibát bevezető commitot.
  • Rebase csak lokális / saját branch-ekre; ne rebase-elj megosztott branch-eket!

On this page