7,540
edits
Changes
→Rebase két külön branch-en
<br>
===Rebaseazonos branch-en===
Ennek csak akkor van értelme, ha a távoli repo-ban és az újban is vannak új commit-ok, ezért nem lehet fast-forward merge-t alkalmazni. Lokálisan, a távoli utolsó commit-ra rá fogja fűzni a lokális új commit-okat, így nem lesz plusz leágazás a commit-logban, az egész egy folytonos vonal esz, viszont elveszik az az információ, hogy a remote és a local elmászott egymástól (ami egyáltalán nem baj, tisztán tartja a commit history-t).
Tegyük fel, hogy a távoli branch-en létrejött az A1 commit, ami már lokálisan nem létezik, és lokálisan létrejött a B1 és B2 commit, ami a távoli branch-en hiányzik. Mivel mind lokálisan mind távol is vannak új commit-ok, a 'Fast-forward' pull nem lehetséges.
<br>
<br>
===Rebase két külön branch-en===
Ha van egy master branch, ahova mindent visszavezetünk, és van egy külön munka branch-ünk, amin dolgozunk, akkor gyakori esemény, hogy a master branch-en annyira előre haladtak a dolgok, hogy a munka branch-et már nem lehetne mergelni a masterre. Ebben az esetben a munka branhc-et rebase-leni kell a master-re, vagyis rá kell rakni a tetejére.
Alább látható, hogy a master-re rákerültek újabb comit-ok a munka branchhez képest.
:[[File:ClipCapIt-220804-121740.PNG]]
<br>
Azt szeretnénk, hogy a munka branch-et rebase-eljük a master tetejére, tehát: rebase: munka -> master<br>
A végeredmény így fog kinézni.
:[[File:ClipCapIt-220804-121758.PNG]]
<br>
<br>
Egy élő példa: <br>
* master: Van egy master branch-ünk: PP-21414. (a lokális mutató egyel hátrébb van mint a remote, a remote a lényeg).
* munka: És van egy munka branch-ünk: redis-webGUI
A leágazás óta 4 commit van a master-en a munka branch-hez képest. De van egy kis trükk. A master-en a 3. commit (ahol a lokális mutató épp áll) az megegyezik a munka branch 2. commit-jával 'mysql db +..'.<br>
Ez azért van, mert a 'redis-webGUI' branch egy másik munka branch-ből származik. Ennek a másik munka branch-nek az utolsó commit-ja a 'create separate mysql db..' volt.
# Ki lett húzva egy munka branch a masteről az 'Install Basic' commit után. Ennek a neve az volt hogy 'munka-branch1'. Ez már nem látszik a fában, mert már törölve lett: long/PP-21.. -> 'munka-branch1'
# A 'munka-branch1'-en született egy commit: 'create separate mysql db'.
# Ki lett húzva egy új branch (redis-webGUI) a 'munka-branch1' branch-ből: 'munka-branch1' -> 'redis-webGUI'
# Az új branch-en (redis-webGUI) született egy darab commit 'Redsi web GUI' címmel.
# A 'munka-branch1' branch mergelve lett (pull request-el) a master-re (long/PP-21..), majd törölve lett. merge 'munka-branch1' -> 'long/PP-21..'
# A törölt 'munka-branch1' branch egyetlen commit-ja (create separate mysql db) megjelent a master tetején.
# A master-en született egy új commit: 'User profile mock..'.
# Elhatároztuk, hogy a 'redis-webGUI' munka branch-et rebase-eljük a master tetejére.
:[[File:ClipCapIt-220804-120859.PNG]]
<br>
<br>
És mi a végeredmény:
# A 'redis-webGUI' branch most már a master-ből nő ki. Mivel a 'redis-webGUI' első commit-ja már rajta volt a masteren korábban, ezért az a commit nem került ráfűzésre a master-re, csak a 'Redis web gui' commit lett ráfűzve. Most már a 'redis-webGUI' branch tartalmazza az összes változtatást ami idő közben a master-en történt (három ilyen commit van).
:[[File:ClipCapIt-220804-122950.PNG]]
===Auto stash===