Changes

GitKraken

6,696 bytes added, 10:48, 4 August 2022
Rebase két külön branch-en
=Fájl kezelésalapok=
==Munkaterület kezelése==
:[[File:ClipCapIt-191117-144240.PNG]]
<br><br>
===Revert commit ===
 
...TODO...
<br>
<br>
 
===Reset head to commit ===
 
...TODO...
<br>
<br>
 
===Reset head to commit ===
 
...TODO...
* Soft:
* Mixed:
* Hard:
<br>
<br>
 
 
===Drop commit ===
 
...TODO...
<br>
<br>
 
===Move commit ===
 
...TODO...
<br>
<br>
==Diff==
:[[File:ClipCapIt-191116-193013.PNG]]
<br>
<br>
 
= Commit ügyek =
=== Commit-ok keresése ===
GitKraken-ben a jobb felső sarokban lévő nagyítóra kattintva kereshetünk a commit-ok nevében.
:[[File:ClipCapIt-191126-002923.PNG]]
A keresett név beírása közben csak azokat a commit-okat emeli ki a fában, amire illeszkedik a név. A kereső input melletti le-fel nyíllal ugrálhatunk a találatokon. Alapból az utolsó 2000 commit-ot mutatja a fa.
 
<br>
<br>
===Checkout commit ===
Tetszőleges commit-ra rá lehet állítani a lokális head mutatót, nem kell hogy egy branch legutolsó commit-ja legyen. Ehhez a commit fában jobb click-menüben válasszuk a 'Check out this commit' lehetőséget. Ekkor láthatjuk, hogy a pipa mellett nem a branch neve lesz, hanem csak annyi hogy 'Head', ami külön branch-ként nem jelenik meg a bal oldali local-branch listában:
:[[File:ClipCapIt-191125-183916.PNG|700px]]
<br>
<br>
 
===Revert commit ===
 
...TODO...
<br>
<br>
 
===Reset head to commit ===
 
...TODO...
* Soft:
* Mixed:
* Hard:
<br>
<br>
 
 
===Drop commit ===
 
...TODO...
<br>
<br>
 
===Move commit ===
 
...TODO...
<br>
<br>
Tetszőleges commit-ra rá lehet állítani a lokális head mutatót, nem kell hogy egy branch legutolsó commit-ja legyen. Ehhez a commit fában jobb click-menüben válasszuk a 'Check out this commit' lehetőséget. Ekkor láthatjuk, hogy a pipa mellett nem a branch neve lesz, hanem csak annyi hogy 'Head', ami külön branch-ként nem jelenik meg a bal oldali local-branch listában:
:[[File:ClipCapIt-191125-183916.PNG]]
...
<br>
==Új branch létrehozása==
=== branch létrehozása az aktuális head-ről ===
Amikor megnyomjuk a felső menüsorban a 'branch' gombot [[File:ClipCapIt-191125-182138.PNG]], akkor attól függetlenül, hogy mit nézegetünk éppen a commit fában, mindig a lokális repon-k aktuális branch-ének (checked out) az aktuális head mutatójánál fogja létrehozni az új branch-et, vagyis ráállít még egy head mutatót az új branch nevével. Tehát a lényeg, hogy a bal oldali branch listában és a a commit tree-ben hol van a pipa: <br>
:[[File:ClipCapIt-191125-182559.PNG]]
Ha a head mutatót elmozgattuk egy régebbi commit-ra, akkor oda fogja létrehozni a branch-et ahova a head mutat.
<br>
<br>
=== branch létrehozása tetszőleges commit-ról ===
Tetszőleges commit-ról lehet branch-et készíteni a commit fában. Ehhez az adott commit jobb-click menüjében válasszuk a 'Create branch here' lehetőséget:
:[[File:ClipCapIt-191125-215231.PNG|300px]]<br>
Majd írjuk be az új branch nevét. Ekkor a head az új branch-re fog ugrani, vagyis ez a branch lesz a checked out branch. Ez természetesen csak a lokális repoban fog létezni, ahhoz hogy a távoliba is bekerüljünk PUSH-olni kell.
:[[File:ClipCapIt-191125-215620.PNG]]
Láthatjuk, hogy a zöld pipa rákerült az újonnan létrehozott 'branch2'-re, ami csak a lokális branch listában szerepel, a remote-ban nem.
<br>
<br>
== Merge ==
<br>
<br>
<br>
<br>
GitKrakenben ez a következő képen néz ki. Tegyük fel, hogy adott a következő commit tree. Láthatjuk hogy lokálisan létrejött a 'third commit' és '4. commit' míg a távoli branchen a 'remote commit'. <br>:[[File:ClipCapIt-191112-231640.PNG]]<br>Ha erre kiadjuk a 'Fast-forward if possible' pull parancsot, akkor a git létre fogja hozni a 'Merge remote tracking branch..' merge commit-ot. <br>
[[File:ClipCapIt-191112-235732.PNG]]<br>
Fontos, hogy a merge commit csak lokálisan fog létezni addig amíg nem nyomunk egy push-t is rá.
<br>A merge-öt a két ág találkozásánál csak egy pötty-el jelöli a GitKraken ellentéten a normál commit-al, amit egy nagyobb kör jelöl benne a commit-ot létrehozó avatárjával. Tehát a merge commit-ot nem látszik hogy ki hozta létre: <br>[[File:ClipCapIt-191126-002326.PNG|250px]] <br><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===
Ha a review-el jóváhagyja a változtatásainkat, akkor merge-ölni tudja azokat a távoli master branch-be. A review és merge felületet már mindig a git szolgáltatók adják, ez már nem része a GitKraken-nek.
 
 
<br>
<br>
 
=Troubelshooting=
 
==File watcher failed to start for this repository==
https://techsparx.com/blog/2018/02/gitkraken-inotify.html<brr>
 
Type this command:
 
$ cat /proc/sys/fs/inotify/max_user_watches
8192
This is the limit on your computer.
 
Each inotify watch consumes a modest amount of memory. On a 64-bit computer like this one, each consumes 1 KB, so 8,192 watches consumes about 8 MB of memory. On a 16GB main memory computer that's a drop in the bucket.
 
Temporarily increasing the limit is this simple:
 
# echo 99999 > /proc/sys/fs/inotify/max_user_watches
After which you'll get this:
 
$ cat /proc/sys/fs/inotify/max_user_watches
99999
To make a permanent change, set fs.inotify.max_user_watches= in sysctl settings. On some systems (Debian/Ubuntu/etc) those settings are in /etc/sysctl.conf and on some others there will be a file in /etc/sysctl.d.
 
After editing the sysctl settings, run this:
 
# sysctl -p
fs.inotify.max_user_watches = 99999
Putting it on one line:
 
# echo fs.inotify.max_user_watches=99999 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
Or on certain other systems:
 
# echo fs.inotify.max_user_watches=99999 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
 
<br>
==Pre-receive hook declined==
A pre-receive hook-ok két helyen lehetnek beállítva.
 
1. Lokálisan, az adott repository .git/hooks mappában. Itt olyan sh script-eket kell berakni, amik ellenőrzik a commit-ot. A GitKraken-ben itt van:
:[[File:ClipCapIt-211026-151345.PNG]]
 
 
<br>
<br>
2. A távoli repoóba, ahova push-olni akarunk.
 
 
 
<br>
<br>
Ha ezek közül egyiket sem szegjük meg, akkor az lehet a baj, hogy a commit-ban lévő username/email nem ugyan az mint a távoli repóban, pl BitBucket-ben.
:[[File:ClipCapIt-211026-151626.PNG]]
A profil-t a jobb felső sarokban választhatjuk ki. Minden profil tartalmaz egy nevet és egy email címet. A profilokat a preferences/profiles-ban állíthatjuk be:
:[[File:ClipCapIt-211026-151753.PNG]]
Bitbucket szerver esetén itt az az email cím kell és név, ami a Bitbucket profilban meg van adva.
 
{{warning|A commit készítésekor kiválasztott profil számít, nem a push-kor kiválasztott profil. Ha a commit-ot rossz profillal csináltuk, akkor nem számít hogy a push alatt mi van kiválasztva}}
 
A rossz profillal készített commit-ot úgy vonhatjuk vissza, hogy az előző commit-ra jobb klikk, majd:
:[[File:ClipCapIt-211026-152244.PNG]]