Changes

Git basics

852 bytes removed, 16:45, 16 November 2019
GitKraken alapok
* -d: mappa szinten hasonlítson össze. Enélkül egyenként feldobálja az összes fájlt külön meld ablakban.
:[[File:ClipCapIt-160930-133557.PNG|1100px]]
===REMOVE===
Git-ben minden egyes commit egy pillanat felvétele a világnak. Ezen pillanat felvételek egymásra mutatnak. (Baloldalon van a legrégebbi, és ahogy haladunk előre az időben mindig egy újabb commit lesz leglelől, ami rá fog mutatni az előzőre. Egy branch nem más mint egy kitüntetett mutató egy adott pillanat felvételre (narancssáraga). Ha egy branch-be kommitálunk, akkor egy saját commit láncot indítunk el arról pontról. A git úgy tartja nyilván az aktuálisan kiválasztott branch-et (ami be vat töltve a munkaterületre) hogy ráállítja a speciális HEAD mutatót. Igazából branch váltás közben nem csinál mást, mint hogy a HEAD mutatót átállítja egy másik branch-re, és az abban a snapshot-ban lévő fájlokat tölti be a munkaterületre.
:[[File:ClipCapIt-160930-144445.PNG|500px]]
A fenti képen az látható, hogy két branch-ünk van. A '''master''' branch (amit a git init magától létrehoz, hogy legalább egy branch legyen a repóban) és a '''test''' nevű branch. Jelenleg a munkaterületünkre a '''master''' van betöltve, mivel arra mutat a '''HEAD''' mutató. A test branch-be már volt egy commit a master hez képest.
$ git branch adam3
</pre>
<br>
<br>
GitKraken-ben kétféle képen hozhatunk létre branch-et. A legegyszerűbb ha megnyomjuk a Branch gombot a felső sávban:
:[[File:ClipCapIt-191114-210055.PNG]]
Ennek a hatására létre fog hozni egy lokális branch-et azon a ponton, ahova a lokális head mutat, vagyis az aktuális lokális branch-en az utolsó commit-ra. A gomb megnyomására megjelenik egy input box amellett a commit mellett ahonnan a branch-et leágaztatjuk. <br>
:[[File:ClipCapIt-191114-210342.PNG]]
A fenti képen látható, hogy létrehoztam a '''branch1''' nevű branch-et a 'Merge remote tracking branch..' nevű commit-ból. Az új branch-et automatikusan checkout-olta a GitKraken. Ezt a baloldalon láthatjuk a 'LOCAL' szekcióban. A master fölött (a korábbi branch) zöld pipával szerepel a '''branch1'''. A commit tree-ben a branch1 név mellett egy +1 szerepel, ami azt jelenti, hogy egy másik lokális branch-nek is ide mutat a head-je. Ha fölé visszük az egeret láthatjuk, hogy a másik lokális branch a '''master'''.<br>
:[[File:ClipCapIt-191114-210845.PNG]]
A branch neve mellette kis számítógép jelzi, hogy ezek a lokális branch head-ek.
<br>
Ha commit-álunk egyet az új lokális branch-en, akkor láthatjuk, hogy a korábbi master (amiből kiindultunk) és az új branch1 head mutatója már egyel eltérnek egymástól:
:[[File:ClipCapIt-191116-095109.PNG]]
 
Az is látszik a képen, hogy a '''branch1''' még a távoli repóban nem létezik, mert csak zöld kis számítógépes ikonja van. A master branch is egy commit-al előrébb jár mint a távoli master. <br>
A push megnyomásával juttathatjuk fel a lokális '''branch1'''-et a távoli repo-ba. Ekkor rá fog kérdezni, hogy mi legyen a távoli repo-ban a neve:
:[[File:ClipCapIt-191114-212356.PNG|750px]]
<br>
<br>
A push után láthatjuk, hogy a 'REMOTE' szekcióban is megjelent a 'branch1' és hogy a commit tree-ben a kis compute mellett megjelent a remote repo-t jelző kis zöld ikon is:
:[[File:ClipCapIt-191114-212833.PNG]]
A branch1 mellette kis pipa jelzi, hogy jelenleg a 'branch1' van check-out-olva.
<br>
<br>
===Váltás===
{{note|A --merged azokat is mutatja, akiknek a mutatója pont arra a commit-ra mutat, ahol most állunk}}
 == Merge ==
Mindig úgy kezdjük a merge-t hogy beleállunk abba a branch-be, AHOVA mergelni akarunk, majd kiadjuk a '''merge <branch neve AHONNAN>''' parancsot.
</pre>
Kétféle merge létezik:
1. Egy szülős (Kétféle merge létezik:  ===Fast-forward)merge===
Ebben az esetben az a branch, ahonnan mergelni akarunk egyenes ági leszármazottja a jelenlegi branch-nek. Az alábbi ábrán pl a '''hotfix'''-et ha mergeljük a '''master''' -be.
:[[File:ClipCapIt-160930-152407.PNG|500px]]
Ebben az esetben a git nem csinál mást, mint előre mozgatja a master mutatóját (fast-forward). Persze ha volt változás, akkor a változásokat elsőként egyesíteni kell és az esetleges konfliktusokat feloldani.
2. ===Két szülős, 3 utas===
Ebben az esetben az a branch ahonnan másolni akarunk (iss53), már nem közvetlen leszármazottja annak a branch-nek ahova merge-ni szeretnénk (master).
:[[File:ClipCapIt-160930-165652.PNG|500px]]
Ebben az esetben nem lehet egyszerűen előre mozgatni a mutatót. A git meg fogja keresni a közös őst, és egy három utas egyesítést fog csinálni a közös ősből, a jelenlegi branch -ből (a példában a master) és a bemásolandó branch-böl (a példában az iss53), és ebből az egészből létre fog hozni egy új commit-ot.
A mi példánkban a c6 lesz létrehozva a c5 c4 és c2 commit-okból.
:[[File:ClipCapIt-160930-170846.PNG|500px]]<br>Fontos, hogy az új merge commit elkészítéséhez a közös őst is felhasználja a git. Ez azért kell, hogy lássa hogy azon fájlokban ami mind a két ágon módosult, mi volt a kiindulási alap. Ha pl. az egyik ágon az első sort töröltem, a másik ágon az utolsót, akkor látni fogja az eredeti alapján, hogy nem az egész fájl változott csak az első és az utolsó sor, ez alapján el tudj készíteni az egyesített verziót.  <br><br>===Merge GitKraken-ben===  <br><br>  ==Rebase==.... TODO .... <br><br>
== Konfliktus feloldása ==
</pre>
:[[File:ClipCapIt-160930-155206.PNG|1000px]]
Ha becsukjuk a meld-et, akkor rá fog kérdezni, hogy sikeres volt e a merege:
</pre>
=Stash=
... TODO ...
* transitive verb: to store in a usually secret place for future use —often used with away
* noun: something stored or hidden away
<br>
<br>
= Tag =
* [new tag] v1.4 -> v1.4
</pre>
 
 
 
=Rapid SVN=
 
 
 
==Felület bemutatása==
 
===Branch-ek kezelése===
Az oldal tején láthatjuk a repository választót.
:[[File:ClipCapIt-190320-143706.PNG]]
Egyszerre mindig csak egy repository lehet kiválasztva, amin éppen dolgozunk. Nem lehet úgy repository-t váltani, hogy van módosított fájl a munkaterületen.
<br><br>
 
Az '''origin''' mutatja a távoli repository-t a '''Local Branches''' mutatja a helyi branch-eket. Az a lokális ág van jelenleg checkout-olva, amire a kis fekete nyíl mutat. ('''>''')
:[[File:ClipCapIt-190320-142231.PNG]]
Egyszerre mindig csak egy aktív branch lehet kiválasztva, amin éppen dolgozunk. Nem lehet úgy branch-et váltani, ha van módosított fájl a munkaterületen.
<br><br>
 
A képernyő alján láthatjuk az aktuálisan checkout-olt branchen hogy hol tart a HEAD pointer a lokális és a távoli repository-ban.
:[[File:ClipCapIt-190320-163431.PNG]]
A sárga (origin) mutatja, hogy a távoli repository hol tart, és a zöld mutatja, hogy a lokális változatunkban hol tart a HEAD pointer. A zöld mezőbe bele van írva a branch neve is (a példában develop). Ha a sárga és a zöld mező egybe esik, akkor a lokális repoban ugyan az van mint a központiban. A távoli állapotot a rapidSVN onnan tudja (sárga mező) hogy nem PULL-ozta csak FETCH-elte a távoli tartalmat, vagyis anélkül hogy letöltötte volna a lokális repoba a változást, csak lekérdezte, hogy mi változott. A rapidSVN periodikusan magától is futtat FATCH-t.
 
<br><br>
 
==Új branch létrehozása==
 
===Lokális branch létrehozása===
Új branch létrehozásához checkout-oljuk azt a lokális branch-et amiből le akarunk ágazni, majd a fenti menüből válasszuk a Branch -> Add Branch lehetőséget.
:[[File:ClipCapIt-190322-112604.PNG]]
Adjuk meg az új branch nevét, és válasszuk az "Add branch and checkout" lehetőséget. Ekkor lokálisan létrejön az új branch-ünk, ami checkout-olva is van. A távoli repóban (origin) ez a branch még nem létezik.
<br>
<br>
Kattintsunk az új lokális branch-re és nézzük meg a log-ját:
:[[File:ClipCapIt-190322-113111.PNG]]
<br><br>
Az új branch-et a develop ágból hoztuk létre. Láthatjuk, hogy a HEAD-je egybe esik a develop ág HEAD-jével. Azoban az új branchnek (Sprint6-swagger-planning) nincs megfelelője a távoli repóban (sárga origin), mivel ez még csak egy lokális branch, ezt PUSH-olni kell hogy a távoliban is megjelenjen.
:[[File:ClipCapIt-190322-113018.PNG]]
<br><br>
 
A fő képernyő alján, ahol az aktuálisan checkout-olt branch commit log-ját mutatja, láthatjuk, hogy a branch még csak lokálisan létezik, ezt jelzi a narancssárga vonal.
:[[File:ClipCapIt-190322-133941.PNG]]
 
 
<br><br>
 
===Lokális branch PUSH-olása===
A lokális branch-et PUSH-olni kell a távoli branch-be. Jobb klikk a lokális branch-re, majd PUSH.
:[[File:ClipCapIt-190322-141328.PNG]]
 
<br><br>
Ekkor a fő képernyőn lévő log historyban, ami az aktuálisan checkout-olt branch-et mutatja, a távoli sárga és a lokális zöld címke egy vonalba került, ezzel jelezve, hogy a lokális és a távoli branch már azonos.
:[[File:ClipCapIt-190322-141614.PNG]]
 
 
 
 
<br>
<br>
Miután már bármit PUSH-oltunk az új branch-be, a log-ban látszik, hogy már külön életet él a develop-hoz képest:
:[[File:ClipCapIt-190322-151513.PNG]]
A képen látható hogy a SPRINT6-swagger-planning branchben a lokális és a távoli ugyan azon a HEAD verzión van, mert a sárga és a zöld címke egybe esik. Azt is láthatjuk, hogy a pirossal jelölt develop ágban a lokális repónk le van maradva, mert a zöld lokális HEAD-et már több commit-al megelőzi a sárga távoli HEAD muató.