diff --git a/app/docs/guides/training/git/ scripts/elso.md b/app/docs/guides/training/git/ scripts/elso.md deleted file mode 100644 index 9a3aae6be7351cb2b905de2fd7b7462b6335eca4..0000000000000000000000000000000000000000 --- a/app/docs/guides/training/git/ scripts/elso.md +++ /dev/null @@ -1,96 +0,0 @@ -Sziasztok, `<insert name here>` vagyok! - -Üdvözlök mindenkit. A videóban a gitről szeretnék mesélni nektek, és a végére remélem sikerül olyan szintű tudást átadnom, hogy a jövőben ne *nagyon* okozzon problémát a verziókezelés. -Olyan kérdésekre fogok választ adni, mint *"Miért kell git-et használnom?"*, *"Miért ilyen bonyolult ez az egész?"* és *"Mégis mi a francot nyerek ezzel?"* -Amire szükséged lesz: egy konzol, működő git-el (erre majd később visszatérek). - - - -A parancsokat nem kötelező nektek is kiadni, de egész hasznos lesz, ha már csináltatok ilyet a gyakorlatra. - - -## Mi is az a verziókezelés? - -(ide beszúrhatod a saját szövegedet, ha szeretnéd) - -Biztos mindannyiótoknak van egy olyan élménye, hogy írt egy dokumentumot. Ezt elmentette, majd egy hét múlva újra írt bele, és szerette volna, hogy a korábbi munkája megmaradjon, vagy csak rögzíteni a különböző állapotokat. - -Ezekből szoktak megszületni az itt látható mappák, fájlok. - -(ide majd be fogok vágni egy képet, amin látszik a első.docx, első_v2.docx, etc...) - -Természetesen ez lehetne egy használható megoldás, de mi van, ha szeretnénk valakivel ezt megosztani? Mi van ha a módosítás dátuma megváltozik közben? Hogyan biztosítjuk, hogy nem sérülnek a fájlok, és nem veszik el egy változata a munkánknak, amire lehet egy-két hét/hónap múlva mégiscsak vissza kell térjünk? - -Erre adnak megoldást a különböző verziókezelő rendszerek. Ezeknek többek között dolguk, hogy számon tartsák a fájljainkat, ahogyan mi ezt kézzel megtettük. - -### Helyi - -Erre a fenti példa a legjobb példa. -Vannak különböző verziói a fájlunknak és ezeket valamilyen -adatbázisban rögzítjük. - -(ide kép jön majd) - -### Központosított - -Ez már egy fokkal okosabb. -A különböző verziókat a központi szerverre rakjuk fel és -onnan szedjük le. -Például van egy Fájlszerverünk amit minden gépről elérnek -az emberek és oda dolgoznak közösen... -Érezhető probléma, hogy így ha meghal a központi szerver, -akkor mindent elvesztünk (eskü nem volt még ilyen 😅). -Továbbá probléma lehet, hogy egymás munkáját felülírjük, -szerencsére egy jó rendszernél erről értesítést kapunk, -hozzá és nem felülírjuk a módosításaink. - -(ide kép jön majd) - -### Megosztott - -Na és itt lépünk be a ma is használt Git világába. -Ennél a megoldásnál már az a trükk, hogy mindenkinek megvan -a teljes projekt az összes verziójával. Felmerül, hogy na -de akkor honnan szedjük le a legújabb verziót? -Különböző megoldások léteznek, például a fejlesztők a -módosításokat azonnal megosztják egymással -(pl.: p2p Torrenthez hasonló módon) vagy -kijelölnek egy központi szervert amivel mindenki -szinkronban van. -Ilyen központi szerver lehet például a [Github](https://github.com/) vagy a [Gitlab](https://gitlab.com/). -Csak megjegyzem, akár a módosításokat emailben is el lehet -küldeni és a szoftver automatikusan megcsinálja a többit a mi részünkön. - - -## Git története - -Még mielőtt belemerülnék a git telepítésébe, használatába, -szeretnék némi sztorizást is megejteni. - -Annó a Linux kernel fejlesztése során okozott nagy fejtörést -az egész verziókezelés megoldása. -1991-től 2002-ig, tehát 11 éven át patchekben -(pl.: e-mailben elküldött szöveg a módosításokkal) -és tömörített fájlokban küldözgették a verziókat a fejlesztők. -Aztán 2002-től egy zárt licenszű verzió kezelőre, a -[BitKeeper](http://www.bitkeeper.org/)-re váltottak. - -Ezt a Linux fejlesztői ingyen használhatták egészen 2005-ig, -mikorra annyira elromlott a kapcsolat a fejlesztők és a cég -között, hogy elvették tőlük a licenszt. -Az i-re a pontott az tette fel, mikor az egyik -kernel fejlesztő -[reverse engineer-elte](https://lwn.net/Articles/132938/) -a BitKeeper-t. -Ekkoriban -[Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds) -úgy döntött, hogy egy új megoldást kell találnia, mely - -- gyors -- egyszerű -- támogatja a többszálú fejlesztést -- teljesen elosztott -- nagy projekteket is képes kezelni (pl.: Linux kernel) - -Így hát megírta a [Git](https://en.wikipedia.org/wiki/Git)-et, mely a mai napig a legelterjedtebb, leggyorsabb és -legkényelmesebb verzió kezelő rendszer. diff --git a/app/docs/guides/training/git/ scripts/masodik.md b/app/docs/guides/training/git/ scripts/masodik.md deleted file mode 100644 index 4db2ba88d34f1d4c2e9ac4346745a666cee63d42..0000000000000000000000000000000000000000 --- a/app/docs/guides/training/git/ scripts/masodik.md +++ /dev/null @@ -1,463 +0,0 @@ -Sziasztok, Blint vagyok! - -Másfél éve kszk-zom, leginkább a sysadminban találhattok meg, nemrég lettem megválasztva a kubernetesünk rendszergazdájának. A git-et már jó pár éve használom aktívan, el se tudom képzelni, hogy ne használjam egy projekthez. - -Ebben a videóban szeretném nektek a git gyakorlati alkalmazását megmutatni, abba bevezetni titeket. - -Kezdetben szeretnélek megkérni, hogy telepítsétek fel a git-et a gépetekre a segédletben leírtak szerint, vagy használjátok a linuxos előadáshoz kapott vm-eteket. - -Én alapból zsh-t használok a gépemen, így lehet, pár dolog nem ugyanúgy fog kinézni, mint nálatok (ha bash-t használtok), de minden ugyanúgy működik (ez egy POSIX shell), csak kicsit barátságosabban néz ki 😉. - -## Konfiguráció - -Állítsuk be magunknak a git-et, hogy kényelmesen tudjuk használni. - -Először is a saját adatainkat állítsuk be, ezt a: - -``` -git config --global user.name "Bálint Réthelyi" -git config --global user.email rethelyibalint@gmail.com -``` - -begépelésével tehetjük meg. - -Ezután állítsuk be, hogy a git milyen szövegszerkesztőt nyisson meg alapértelmezetten, ezt főként `commit`-oknál és `merge`-eknél fogjuk használni. - -A szükséges parancs pedig: - -``` -git config --global core.editor vim -``` - -Én szeretek `vim`-et használni, de ti nyugodtan beállíthattok magatoknak `nano`-t, vagy akár a VS Code-ot is, sokszor elég kényelmes tud lenni. - -Esetleg windows-on a notepad++-t is beállíthatjátok, ehhez a parancsot a segédleteben láthatjátok. - -### Jelenlegi konfig - -Nah, akkor nézzük meg, eddig mit alkottunk, hogy néz ki az összes git-es beállításunk: - -Ezt a: - -``` -git config --list -``` -parancs kiadásával nézhetjük meg. - -## Alapok - -Ha elakadtok git használat közben, akkor rengeteg segítség létezik, szerencsére a git-nek van egy nagyon jó help parancsa, valamint a man page-t is lehet nézegetni. - -### Git repo - -A git repository, vagy repo egy olyan mappa, mely gites verziókövetve van, azaz bárhol, ahol találunk egy .git mappát, az valójában egy git repo. - -Kezdjünk is bele, készítsünk egy saját repot! - -Ehhez készítsünk egy tetszőleges mappát, ez lesz a projektünk mappája, és lépjünk is bele. - -``` -mkdir projektem -cd projektem -``` - -Persze megnézhetjük, mi a helyzet a git-el, a `git status` paranccsal, de nem fog meglepni minket, hogy semmi (hiszen most hoztuk csak létre a projektet). - -``` -git status -hiba hiba.... -``` - -A teljesen üres mappánk még nincs verziókezelés alatt. Egy `ls -la`-val ezt ellenőrizni is tudjuk, nem látunk `.git` mappát. - -``` -ls -la -``` - -#### Git init - -Inicializáljuk hát ebbe a mappába a gitet, ezt a beszédes `git init` paranccsal tehetjük meg. Ez beállítja nekünk a `master` branchet és még jó pár alap dolgot (a branch-ről majd később beszélek még, egyelőre annyit elég tudni, hogy ide kerülnek a mentéspontok sorban, mint egy fa ága, innét jön a branch elnevezés). - -``` -git init -``` - -Ha megint megnézzük az `ls -la` paranccsal, mostmár van egy `.git` mappánk. Ebben benne van minden adatunk a repoval kapcsolatban. - -Amikor egy távoli repo-t leszedünk, akkor ezt a `.git` mappát kapjuk meg, és ennek tartalmából már a gépünkön található git alkalmazás előállítja nekünk a master ág legutóbbi mentéspontját. - -#### Mentéseink tárolása - -A mentések tárolásának fajtáiról a jegyzetben olvashattok, itt annyit említenék csak meg, hogy a git minden, azaz tényleg minden fájlt lemásol, ami verziókezelés alatt áll. Azaz, ha feltöltünk egy 1 GiB-os videót, majd a következő mentéskor átnevezem a videót, akkor már 2 GiB-nyi videót fog tartalmazni a repónk. Ha ez megijesztett minket és megpróbálnánk letörölni, ettől még a repóban ugyanúgy benne lesz, méretet nem csökentünk vele, persze utólag vissza tudunk menni az adott mentéshez, és kitörölni belőle... - -Nézzül meg, mi a helyzet a jelenlegi repónkkal. - -``` -git status -``` - -Láthatjuk, hogy még nincs semmilyen mentéspontunk, nincs mit elmentenünk. Megfigyelhetjük, hogy a git próbál segíteni nekünk (ezt jó sok helyen láthatjuk majd). - -Vegyünk fel egy új fájlt: - -``` -echo alma > gyumolcskosar -``` - -Újra megnézve a git status-t, láthatjuk, megjelent a fájlunk, de még nincs verziókezelés alatt. - -#### Git status-ok - -Milyen állapotok léteznek egy repo-ban? - -Van az: - -- Untracked: Ami még nincs verziókontroll alatt -- Staged: Ami már verziókontroll alatt van de még nem - készítettünk róla pillanatképet -- Unmodified: Amit már elmentettünk és azóta nem változott -- Modified: Az a fájl, ami már verziókontroll alatt van - és változott. Ezt utánna szintén Stage-be tudjuk tenni - -Láthatjuk, hogy a git megint próbál segíteni nekünk, írja is, hogy ahhoz hogy verziókövetve legyen a fájlunk, használjuk a `git add` parancsot. - -Adjuk is ki: - -``` -git add gyumolcskosar -``` - -Itt a gyümölcskosár helyett írhattam volna simán . -ot, akkor a repo-ban található összes fájlt bele tette volna (kivéve persze, amit megtíltunk neki, erről is kicsit később). - -Mostmár, ha `git status`-t hívunk, megjelenik a gyümölcskosarunk, új fájlként, `staged` állapotba került, akár el is tudjuk menteni. A mentéshez a `git commit` parancsot adjuk ki. Ekkor megnyílik az előre beállított szövegszerkesztőnk, valamint némi információ a leendő mentéspontról. - -``` -git commit -``` - -Láthatjuk, amit a `git status` írna ki, valamint pár segítséget a git-től. -A #-el kezdődő sorok kommentek, ezek a commit üzenetbe nem kerülnek bele, ezek csak nekünk szólnak. - -Írjuk is be az első sorba, hogy Készítettem egy gyümölcskosarat, majd mentsük el a fájlt, zárjuk b e a szövegszerkesztőt. - -A git érzékelte, hogy bezártuk a fájlt, abból kiolvasta a # nélküli sorokat és hozzáadta a mentéspontunkhoz, mint üzenet, valamint megjelent pár *hasznos* infó is. - -Nézzük, most mi a helyzet a repoban? - -``` -git status -``` - -Már nem szól semmit amiatt, hogy nincs mentésünk (hiszen az előbb készítettünk egyet), továbbá azt is írja, hogy nincs semmi amin változtattunk volna, azaz erről az állapotról nem is tudnánk új mentést készíteni (megegyezne az korábbival). - -Nézzük meg a következő két állapotot is, amiben egy fájl lehet. Írjuk bele a gyümölcskosarunkba, hogy már körte is van benne. - -``` -echo körte >> gyumolcskosar -``` - -Adjuk ki a `git status`-t: - -Láthatjuk, hogy mostmár `modified` állapotba került a gyümölcskosarunk. Mentsük is el, de egy kicsit kényelmesebb módon. - -``` -git add gyumolcskosar -git commit -m "Raktam bele körtét is" -``` - -Fontos, ne felejtsük el először hozzáadni a fájlunkat a stage-hez, a `git add gyumolcskosar` paranccsal. - -Készítsünk egy új fájlt `hordo` névvel, és nézzük meg, mit ír ki a `git status -s` parancs. Ezzel a kapcsolóval képesek vagyunk egy rövidített státuszt lekérni. - -Add-oljuk, majd commit-oljuk el. - -``` -git add hordo -git status -s -git commit -m "Hoztunk egy hordót" -``` - -#### Gitignore - -Oké, de mi van, ha nagyon nem szeretnénk, ha egy fájlunk verziókezelés alatt állna? Mondjuk a build-ek mappái, egy IDE által generált fájlokra, esetleg a gites előadás jegyzeteimre. - -Hozzunk létre egy `jegyzeteim.txt`-t és egy `.gitgnore`-t - -``` -touch jegyzeteim.txt -touxh .gitgnore -``` - -Ha kiadjuk a `git status` parancsot, megjelenik a jegyzeteim. - -Írjuk bele a a jegyzeteim.txt-t a gitignore-ba. - -``` -echo jegyzeteim.txt >> .gitignore -``` - -Adjuk ki *megint* a `git status` parancsot. Oh, eltűnt a jegyzetünk! Pont ezt akartuk, mostmár a git nem fogja figyelni ezt a fájlt. -Add-oljuk és mentsük el a gitignore-t. - -``` -git add .gitignore; git commit -m "jegyzeteim ignorálása" -``` - -#### Fájlok mozgatása - -A git nem tárol semmi adatot változásokról, csak mentéseket készít. Próbáljuk ki, mi történik, ha átnevezünk egy fájlt? - -``` -mv gyumolcskosar gyumolcskosar.txt -``` - -Toljunk egy `git status`-t. - -Láthatjuk, hogy az eredeti fájlt "töröltük", és sikeresen létrehoztunk egy új fájlt a repoban. Nézzük meg, mi történik, ha add-oljuk a változtatásokat. - -``` -git add . -git status -``` - -Persze a szokásos `git status` sem maradhat el. Mostmár látszik, hogy átnevezés történt.## - -A git képes rá, hogy felismerjea fájlokat és eldöntse, hogy a két fájl ugyanaz, csak átneveztük, mozgattuk, etc.. Követni nem tudja, csak azt látja, hogy létrejött egy új fájl, mint ami törölve lett nemrég. - -#### Mentési előzmények - -A git egyik leghasznosabb parancsa a `git status` után a `git log`. - -Próbáljuk is ki: - -``` -git log -``` - -Láthatjuk, milyen mentéspontjaink vannak, és a hozzájuk tartozó dolgokat, mint a commit hash vagy az üzenet. - -Picit szebbé is tehetjük, ha kiadjuk a parancsot a `--oneline` kapcsolóval. - -``` -git log --oneline -``` - -Máris csak a lényeget látjuk. Azt is észre vehetjük, csak 7 karaktert kapunk a hash-ből. ELég csak pár karakter, hogy be tudjuk azonosítani a commit-ot. - -## Branch-ek, elágazás - -### Mik azok a branch-ek? - -Korábban már említettem a branch-et, mint fogalmat. Képzeljük el a git-et, hogy szeretne adatokat, mutatókat tárolni. Mi van akkor, ha egy mutatóból kétfelé is elindulunk? Mondjuk Rick és én elkezdünk együtt kódolni... -Képzeljük el úgy, mint egy fa törzse, melyből ágak jönnek létre. Készítünk egy ágat Rick-nek és egyet nekem. Így tudunk ketten külön dolgozni, míg a master-t nem piszkáltuk. -Úgy is el lehet képzelni egy nagyobb projektnél, hogy van a master, amin az éles, jól működő kód van, és van a fejlesztési ág, amin pedig a fejlesztők dolgoznak (ez így azért még nagyon leegyszerűsíti). - -Nézzünk is egy példát, adjuk ki a `git status` parancsot. - -``` -git status -``` - -Látható, hogy jelenleg a `master` ágon vagyunk. Nézzük meg, milyen branch-ek vannak most a repónkban. - -``` -git branch -``` - -Még csak eyg águnk van. Ha kiadjuk a `git branch <új branch neve>` parancsot, akkor készül egy új ág, de arra figyeljünk, ilyenkor még nem megyünk át rá. -Nézzük is meg, hogy tényleg elkészült, a `git branch` paranccsal. - -``` -git branch atnevezes -git branch -``` - -Itt a `*` azt jelöli, hogy éppen melyik branch-en vagyunk. Ha kiadnánk a `git status`-t, amit most nem teszünk meg, ne koptassuk el szegényt, ugyanúgy láthatánk, melyik ágon vagyunk. - -Menjünk át az új ágra. - -``` -git checkout atnevezes -``` - -Itt rögtön látjuk is, a módosításainkkal nem történt semmi. Ha most elmentjük őket, akkor a jelenlegi ágra fogja beilleszteni őket. - -``` -git add . -git status -git commit -m "Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz" -``` - -Most ha kiadjuk a `git log --graph --oneline` parancsot, akkor meg is láthatjuk, hogy néz ki a fánk. - -### Hogyan épülnek fel? - -Ezt nézzétek meg a jegyzetben, röviden annyit, hogy mutatókat, pointereket használ a git, minden mentéspont az előzőre mutat, valamint a megfelelő fájlokra, amiket módosítottunk. - -### Ágak közötti mozgás - -Mielőtt visszatérnénk a master-re, nézzük meg, milyen fájljaink vannak. - -``` -ls -la -``` - -A gyumolcskosar.txt a lényeges. - -Térjünk vissza a master-re, és adjuk ki megint az `ls -la`-t. - -``` -git checkout master -ls -la -``` - -Látható, hogy visszaléptünk pontosan abba az állapotba, ami volt, mielőtt eljöttünk volna, azaz a gyümölcskosarat nem is változtattuk meg. Ez azért jó, mert két teljesen elkülönülő munkát szét tudunk választani. - -Írjuk a gyümölcskosár végére, hogy szőlő és mentsük is el. - -``` -echo szolo >> gyumolcskosar -git add . -git commit -m "Tettem bele szőlőt is" -``` - -Most kiadva a `git log --graph --oneline`-t már egy érdekesebb eredményt láthatunk. - -Hová tűnt a fájlunk? A git nem fogja alapból jelezni nekünk azt, amit nem lát a jelenlegi mentésből visszamenve. -Ahhoz hogy lássuk a másik ágat is, tegyük hozzá a `--all` kapcsolót. - -``` -git log --graph --oneline --all -``` - -Nah, rögtön látjuk a másik ágat is. - -Menjünk vissza az átnevezés ágra sé módosítsuk kicsit. - -``` -git checkout atnevezes -``` - -Nevezzük át a hordót hordó.txt-re, majd mentsük is el a munánkat. - -``` -mv hordo hordo.txt -git add . -git commit -m "Adtam kiterjesztést a hordónak is" -``` - -Egy megismételt `git log`-al láthatjuk is a fánkat. - -``` -git log --graph --oneline --all -``` - -### Merge-elés - -Az egyik legfontosabb dolog az ágak létrehozása után, hogy azokat be is tudjuk olvasztani valahova. A feladat az lenne, hogy a masterre beillesszük az átnevezés ágon végzett módosításokat. -Ehhez a `git merge <branch neve>` parancsot használhatjuk. Ez a parancs a kiválasztott ágat megpróbálja beolvasztani oda, ahol jeleneleg a `HEAD` mutatónk van. - -Menjünk is vissza a masterre. és próbáljuk meg merge-elni az átnevezés ágat. - - -``` -git checkout master -git merge atnevezes -``` - -Ekkor meg fog nyílni a szövegszerkesztőnk, ugyanis egy -új mentéspontot fogunk készíteni a `master` águnkra. -A feladott merge üzeneten nem kell módosítanunk, teljesen -jó így. - -A merge lefut és láthatjuk mi is történt. -Most egy újabb `git log --graph --oneline --all`-al ezt láthatjuk. -Ez a merge commit egyszerre mutat két ágra is. - -#### Merge conflict - -Mi van akkor, ha ketten egyszerre ugyanazat változtatjuk? -Úgy döntöttünk, Rick barátommal szeretnénk pálinkát főzni, szóval a hordóba teszzük ízlás szerint pár gyümölcsöt. - -Menjünk át a saját branch-ünkre. - -``` -git checkout -b blint -``` - -A -b kapcsolóval létre tudunk hozni nemlétező branch-et a checkout-nak megadva. - -Ha kiadjuk megint a `git branch`-et, láthatjuk, már három ág is van. - -Tegyünk bele a hordóba egy nekünk tetsző gyümölcsöt. - -``` -echo korte >> hordo.txt -``` - -Mentsül is el. A -a kapcsolóval egy lépést megint meg tudok spórolni. - -``` -git commit -a -m "Raktam bele körtét" -``` - -Rick eközben úgy döntött, ugyanebbe a hordóba szilvát szeretne tenni. Menjünk át a master-re és tegyük meg ott. - -Tehát: -``` -git checkout master -echo szilva >> hordo.txt -git commit -a -m "Raktam bele szilvát" -``` - -Ha megnézzük megint a gráfunkat, láthatjuk mi a helyzet jelenleg a reponkban. - -``` -git log --graph --oneline --all -``` - -Hát most próbáljuk meg merge-lni. - -``` -git merge blint -``` - -Oh, no, merge conflict keletkezett. -Nem kell megijedni, nem a világ vége és a git segít ahol tud. - -Az a helyzet, hogy egyszerre ugyanazt a sort módosítottuk és a git nem tudta -eldönteni mit tegyen. Megtartsa az egyiket vagy mindkettőt? Mégis mi legyen? - -Ezeket a kérdéseket nekünk kell megválaszolnunk. - -Először nézzük meg, mi a státusz. - -``` -git status -``` - -Ilyenkor a git beírja a fájlba mindkét branch változatát, ezt meg is jelöli nekünk, és tőlünk várja a megoldást. - -Nincs mit tenni, mint kitalálni, hogy mi maradjon a fájlban. - -Itt láthatjuk nyilakkal a HEAD és a blint branch által eszközölt módosításokat, egyenlőségjellel elválasztva egymástól. - -Csináljunk egy vegyes pálinkát, legyen benne mind a kettő. - -Ha megnézzük a státuszt, láthatjuk, még mindig ugyanaz a helyzet, mint korábban. Amíg nem mentjük el a módosításunkat, addig ezt fogja kiírni. - -``` -git commit -a -m "blint branch mergelve és konflikt megoldva" -``` - -Nézzük meg a gráfot ezután. - -``` -git --graph --oneline --all -``` - -Látjuk, a merge commit-unk egyben a konfliktus megoldását is tartalmazza. - -Most hogy tudjuk az alapokat, már csak mindezt közösen kell végezzük, online. Erről majd a gyakorlaton lesz szó. - -Addig is szép hétvégét, hetet, ki mikor nézi meg kívánok nektek! \ No newline at end of file diff --git a/app/docs/guides/training/git/01_intro.md b/app/docs/guides/training/git/01_intro.md index dfd440bb8052ab732aa0d8e4a976ab5fa46ea8f6..99e26f8474abbcca2e687adf40fd2c9c80503311 100644 --- a/app/docs/guides/training/git/01_intro.md +++ b/app/docs/guides/training/git/01_intro.md @@ -1,3 +1,9 @@ +--- +description: Ismertető a Git-ről. +keywords: [Git, verziókezelés, fejlesztés, kszképzés] +pagination_next: guides/training/git/versioning +--- + # Intro ## Bevezetés @@ -9,8 +15,7 @@ Olyan kérdésekre fogok választ adni, mint "Miért kell git-et használnom?", "Miért ilyen bonyolult ez az egész?" és "Mégis mi a francot nyerek ezzel?". -<!-- ODO Amire szükséged lesz: Egy konzol, működő git-el workshop elején -van egy útmutató) --> +<!-- TODO Amire szükséged lesz: Egy konzol, működő git-el workshop elején van egy útmutató) --> ## Tippek @@ -22,6 +27,13 @@ belefektett munkát. ## Ki vagyok én? +<img +src={require('./img/me.jpg').default} +border="false" +style={{float: "right", marginLeft: "8px"}} +width="250" +/> + Réthelyi Bálint (Blint), másod éves infós, jelenleg a reszortgazdaságis és kancellár, emellett lelkes szerversimogató és DevOps-os. Van pár [DevTeam](https://git.sch.bme.hu/kszk/devteam)ben megtalálható projektem ([hőmérőSCH](https://git.sch.bme.hu/kszk/devteam/statusch/homerosch) és [becskasszáSCH](https://git.sch.bme.hu/kszk/devteam/becskasszasch)). @@ -30,10 +42,7 @@ során nyugodtan keress meg - Emailben: rethelyi.balint [kukac] kszk.bme.hu -<div style={{textAlign: 'center'}}> -<img src={require('./img/me.jpg').default} alt="Kép magamról" /> -</div> +## Források -<!--Forrás: [Rafael László (Lackó) git-es jegyzete](https://home.sch.bme.hu/~rlacko/git/) -Forrás2: [Pro Git könyv](https://git-scm.com/book/en/v2/) ---> +- Rafael László (Lackó) [2020-as Git jegyzete](https://home.sch.bme.hu/~rlacko/git/): "Ezt a jegyzetet még 2020 őszén készítettem egy az Schdesign-nak tartott előadáshoz a már előzetesen összeszedett ismereteim és a Git-es könyv alapján." +- [Pro Git könyv](https://git-scm.com/book/en/v2/): Egy gyakorlatias, részletes összefoglalója a Git-nek. diff --git a/app/docs/guides/training/git/02_versioning.md b/app/docs/guides/training/git/02_versioning.md index 4f856459ef69694de87e26915479e69a2a3fa6d8..7a34180a10144fc1c15b2474749edfa4cad7c7d2 100644 --- a/app/docs/guides/training/git/02_versioning.md +++ b/app/docs/guides/training/git/02_versioning.md @@ -50,19 +50,23 @@ Ezekre megoldást adnak a különböző verziókezelő rendszerek. Többek közt dolguk, hogy fájljaink számon tartsák, ahogy például kézileg tettük. -### Milyen verzió kezelő rendszereink lehetnek? +## Milyen verzió kezelő rendszereink lehetnek? -#### Helyi +### Helyi Erre a fenti példa a legjobb példa. Vannak különböző verziói a fájlunknak és ezeket valamilyen adatbázisban rögzítjük. -<div style={{textAlign: 'center'}}> -<img src={require('./img/vcstype_local.png').default} alt="Local Version Control Systems" /> -</div> +<center> +<img +src={require('./img/vcstype_local.png').default} +alt="Local Version Control System" +width="500" +/> +</center> -Ilyen az [RCS](https://www.gnu.org/software/rcs/). +Ilyen a [RCS](https://www.gnu.org/software/rcs/). ### Központosított @@ -77,9 +81,13 @@ Továbbá probléma lehet, hogy egymás munkáját felülírjük, szerencsére egy jó rendszernél erről értesítést kapunk, hozzá és nem felülírjuk a módosításaink. -<div style={{textAlign: 'center'}}> -<img src={require('./img/vcstype_central.png').default} alt="Centralized Version Control Systems" /> -</div> +<center> +<img +src={require('./img/vcstype_central.png').default} +alt="Centralized Version Control Systems" +width="500" +/> +</center> ### Megosztott @@ -96,6 +104,10 @@ Ilyen központi szerver lehet például a [Github](https://github.com/) vagy a [ Csak megjegyzem, akár a módosításokat emailben is el lehet küldeni és a szoftver automatikusan megcsinálja a többit a mi részünkön. -<div style={{textAlign: 'center'}}> -<img src={require('./img/vcstype_distributed.png').default} alt="Distributed Version Control Systems" /> -</div> +<center> +<img +src={require('./img/vcstype_distributed.png').default} +alt="Distributed Version Control Systems" +width="500" +/> +</center> diff --git a/app/docs/guides/training/git/04_installation.md b/app/docs/guides/training/git/04_installation.md index c2cc64a6e9e7ba6a19c09c19c2e9c19514ede9ba..9c54fa967328070c3c307e18f17daff9efaa4c23 100644 --- a/app/docs/guides/training/git/04_installation.md +++ b/app/docs/guides/training/git/04_installation.md @@ -76,7 +76,7 @@ a fájlrendszerben elszórva. Erről egy pár táblázat: Nálam a konfig a home mappámban például így néz ki: -``` +```bash $ cat ~/.gitconfig [user] name = Bálint Réthelyi @@ -97,7 +97,7 @@ $ cat ~/.gitconfig Először is a saját adataink: -``` +```bash $ git config --global user.name "John Doe" $ git config --global user.email johndoe [AT] example.com ``` @@ -108,13 +108,13 @@ $ git config --global user.email johndoe [AT] example.com Erre főként a mentéspontokhoz tartozó üzenet megírásához van szükség. -``` +```bash $ git config --global core.editor nano ``` vagy például notepad++-ra windows-on: -``` +```bash $ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -multiInst -notabbar -nosession -noPlugin" ``` @@ -122,7 +122,7 @@ $ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -m Nézzük meg az összes beállításunk: -``` +```bash $ git config --list user.name=Bálint Réthelyi user.email=rethelyibalint@gmail.com @@ -136,7 +136,7 @@ commit.gpgsign=true Ha pedig csak egy adottat szeretnénk: -``` +```bash $ git config user.name Bálint Réthelyi ``` diff --git a/app/docs/guides/training/git/05_basics.md b/app/docs/guides/training/git/05_basics.md index 10f67f053d84bd0a0d28c70a054843000e440e3f..1d200de616af218ba3ec62a9da6f19aff34e2c4b 100644 --- a/app/docs/guides/training/git/05_basics.md +++ b/app/docs/guides/training/git/05_basics.md @@ -4,7 +4,7 @@ Git-ben van egy beépített git help parancs: -``` +```bash $ git help <verb> $ git <verb> --help $ man git-<verb> @@ -12,13 +12,13 @@ $ man git-<verb> Például a config-al kapcsolatos dolgok: -``` +```bash $ git help config ``` De ha csak egy gyors áttekintésre van szükséged: -``` +```bash $ git config -h usage: git config [<options>] @@ -42,7 +42,7 @@ A Git repository egy olyan mappa, mely Git verziókezelés alatt áll. Tehát az a mappa, ahol van egy .git mappa, az egy git repo. -``` +```bash $ ls -al total 20 drwxrwxr-x 4 blint blint 4096 okt 8 12:59 . @@ -57,7 +57,7 @@ Csináljunk egy sajátot! Hozzunk létre egy tetszőleges projekt mappát és lépjünk bele -``` +```bash $ mkdir projektem $ cd projektem @@ -68,7 +68,7 @@ Ehhez a `git status` parancsot tudjuk használni. Ez a parancs a jelenlegi git repo-nkról képes információkat kiírni. -``` +```bash $ git status fatal: not a git repository (or any of the parent directories): .git @@ -88,17 +88,17 @@ egy fa ága. <img src={require('./img/basic-branching.png').default} alt="Git branch" /> </div> -``` +```bash $ git init . hint: Using 'master' as the name for the initial branch. This default branch name hint: is subject to change. To configure the initial branch name to use in all hint: of your new repositories, which will suppress this warning, call: -hint: +hint: hint: git config --global init.defaultBranch <name> -hint: +hint: hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and hint: 'development'. The just-created branch can be renamed via this command: -hint: +hint: hint: git branch -m <name> Initialized empty Git repository in /home/blint/Projects/random codes/git_pres_working_dir/projektem/.git/ @@ -106,7 +106,7 @@ Initialized empty Git repository in /home/blint/Projects/random codes/git_pres_w Ha megnézzük, mostmár van egy .git mappánk -``` +```bash $ ls -al total 12 drwxr-xr-x 3 blint blint 4096 Mar 19 12:40 . @@ -125,7 +125,7 @@ előállítja nekünk a master ág legutóbbi mentéspontját. Egy logikus megoldásnak tűnhet, hogy az egyes fájlok közt csak az eltéréseket tároljuk. Például: -```gyumolcskosar +```txt title="gyumolcskosar" 1. mentés: alma @@ -153,7 +153,7 @@ az adott mentésből (ezért nem jó ötlet git repo-ba 100 GB-os vm image-t fel Oké, tehát például a mappákba bemásolja a mentéseinket valamilyen módon, de mégis hova? -``` +```bash $ tree .git/objects/ .git/objects/ ├── 13 @@ -193,7 +193,7 @@ Ennél jobban nem megyek bele a témába, de érdekes olvasmány. Hogyan néz ki egy mentés (a `git log`-al tudod megnézni)? -``` +```bash commit e334ae2e8c4104429ff034152e622851a25c3a97 Author: blint <blintmester@sch.bme.hu> Date: Thu Mar 18 15:37:54 2021 +0100 @@ -224,7 +224,7 @@ Nézzük meg ezen az ábrán és egy példa projekten keresztül: Mi a jelenlegi helyzet a frissen inicializált repo-ban? -``` +```bash $ git status On branch master No commits yet @@ -239,7 +239,7 @@ Próbál segíteni ahol csak tud. Vegyünk fel egy új fájlt. -``` +```bash echo 'alma' > gyumolcskosar ``` @@ -251,7 +251,7 @@ hozta._ - Linux magic #01 Újra megvizsgálva a status-t, látni fogjuk, hogy megjelent, de még nincs verziókontroll alatt. -``` +```bash $ git status ... Untracked files: @@ -267,13 +267,13 @@ _Ezek a parancsok mind képesek rá, hogy Unix-os módon több fájlra is kiadhatóak legyenek. Például a `<fájl>` lehet `*.jpg`amivel minden .jpg fájlt kijelölünk a jelenlegi mappában._ - Linux magic #02 -``` +```bash $ git add gyumolcskosar ``` Ezután megjelenik, mint új fájl a git adatbázisában. -``` +```bash $ git status ... Changes to be committed: @@ -288,7 +288,7 @@ használni. `$ git commit`-ot kiadva megnyilik a beállított szövegszerkesztőnk és némi információ a leendő mentéspontról. -``` +```bash # Please enter the commit message for your changes. Lines starting # with '#' will be ignored, and an empty message aborts the commit. # @@ -307,7 +307,7 @@ A # -el kezdődő sorok kommentek, ezek nem fognak a commit Írjuk be az első sorba, hogy `Készítettem egy gyümölcskosarat`, majd mentsük el a fájlt és zárjuk be a szövegszerkesztőt. -``` +```bash $ git commit [master (root-commit) c45abc3] Készítettem egy gyümölcskosarat 1 file changed, 1 insertion(+) @@ -322,7 +322,7 @@ Továbbá megjelent pár további hasznos információ is. Ismételten nézzük meg mi a helyzet a reponkban: -``` +```bash $ git status On branch master nothing to commit, working tree clean @@ -335,14 +335,14 @@ mit elmenteni. Nézzük meg a további két állapotot is amiben lehet egy fájl. Írjuk bele a gyumolcskosar fájlba, hogy `korte` -``` +```txt title="gyumolcskosar" alma korte ``` Ezután kiadva a `git status`-t: -``` +```bash $ git status On branch master Changes not staged for commit: @@ -365,14 +365,14 @@ hogy várjon egy szöveget, mint mentéshez kapcsolódó üzenet. `-m: message, -a: all`, de tudunk hosszabb verziókat is használni, mint `--message, --all`. -<Note type="warning" label="Megjegyzés"> +:::tip Megjegyzés Ne felejtsük el először stagelni a mentendő fájljaink egy `git add <fájl>` parancs kiadásával. -</Note> +:::tip -``` +```bash $ git add gyumolcskosar $ git commit -m "Raktam bele egy körtét" ``` @@ -380,7 +380,7 @@ $ git commit -m "Raktam bele egy körtét" Készítsünk egy új fájlt `hordo` néven és nézzük mit ír ki a `git status -s` parancs. -``` +```bash $ git status -s ?? hordo ``` @@ -401,19 +401,17 @@ Láthatjuk, hogy a `jegyzeteim` fájl megjelent. Most írjuk be a fájl nevét a `.gitignore`-ba. -<Note type="tip" label="Tipp"> +:::tip Tipp ```shell-session -echo jegyzeteim.txt >> .gitingore +echo jegyzeteim.txt >> .gitignore ``` Itt a >> a hozzáfűzés miatt kell, hasznos ha nem írjuk felül az egész fájlt. -</Note> +:::tip - -`.gitignore`: -``` +```txt title=".gitignore" jegyzeteim.txt ``` @@ -429,11 +427,11 @@ A git semmi adatot nem tárol változásokról, csak mentéseket készít, ahogy említettem. Próbáljuk ki, hogy mi történik ha átnevezünk egy fájlt? -``` +```bash mv gyumolcskosar gyumolcskosar.txt ``` -``` +```bash git status On branch master Changes not staged for commit: @@ -452,7 +450,7 @@ Látható, hogy az eredeti fájlt "töröltük" és egy új fájlt vettünk fel a repo-ba. Érdekes, mi lenne ha stagelnénk a változtatásokat `git add .` -al? -```shell-session +```bash $ git add . $ git status On branch master @@ -473,7 +471,7 @@ fájl ami szinte ugyanaz, mint ami törölve lett nemrég. A Git egyik legjobb parancsa a `git log` a `git status` után és szeretném ha kipróbálnád. -``` +```bash commit 996698cf3273800680c351df950ebe1fbaf5182a (HEAD -> master) Author: Bálint Réthelyi <rethelyibalint@gmail.com> Date: Sat Mar 20 13:02:20 2021 +0100 @@ -506,7 +504,7 @@ a üzenet. Picit tegyük szebbé. Adjuk ki az előző parancsot a `--oneline` kapcsolóval. -``` +```bash 996698c (HEAD -> master) jegyzeteim ignorálása 36552bc Hoztunk egy hordót is a8a9b26 Raktam bele egy körtét diff --git a/app/docs/guides/training/git/06_branch.md b/app/docs/guides/training/git/06_branch.md index 6947596b9ad2635a54fc3d1c03b1848ef02e635f..268350f7aa9fee1d03fc9eb9cd54f811827da101 100644 --- a/app/docs/guides/training/git/06_branch.md +++ b/app/docs/guides/training/git/06_branch.md @@ -12,7 +12,7 @@ ahol jártunk mondjuk azzal a névvel, hogy `atnevezes`. Először nézzük meg, mi a helyzet jelenleg a `git status` paranccsal. -``` +```bash $ git status On branch master Changes to be committed: @@ -26,7 +26,7 @@ le ágazunk. Nézzük meg jelenleg milyen branch-ek vannak a repo-nkban a `git branch` paranccsal. -``` +```bash $ git branch * master @@ -38,7 +38,7 @@ készül egy új ág, de arra figyeljünk, hogy ilyenkor még nem megyünk át rá. Nézzük is meg, hogy tényleg elkészült a `git branch` paranccsal. -``` +```bash $ git branch atnevezes @@ -52,7 +52,7 @@ melyik ágon vagyunk. Gyerünk át az új ágra. Ehhez a `git checkout <ág neve>` parancsot tudjuk használni. -``` +```bash $ git checkout atnevezes D gyumolcskosar A gyumolcskosar.txt @@ -67,7 +67,7 @@ beilleszteni őket. Nézzük meg `git status`-al, hogy mi a helyzet. -``` +```bash $ git status On branch atnevezes Changes to be committed: @@ -80,7 +80,7 @@ Mentsük el ide a módosításaink `Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz` üzenettel -``` +```bash $ git commit -m "Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz" [atnevezes 07ac740] Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz 1 file changed, 0 insertions(+), 0 deletions(-) @@ -90,7 +90,7 @@ $ git commit -m "Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz" Ezt követően ha kiadjuk a `git log --graph --oneline` parancsot, akkor meg is láthatjuk a jelenlegi helyzetet a mi fánkban: -``` +```bash * 07ac740 (HEAD -> atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz * 996698c (master) jegyzeteim ignorálása * 36552bc Hoztunk egy hordót is @@ -132,12 +132,12 @@ fog mutatni. Ezért is kellett figyelni az előzőnél, hogy mentés előtt átváltsunk a megfelelő ágra. -#### Ágak közti mozgás +## Ágak közti mozgás Még mielőtt vissza mennénk a master-re, nézzük meg milyen fájljaink vannak az `ls -al` -el. -```shell-session +```bash $ ls -al total 20 drwxr-xr-x 3 blint blint 4096 Mar 20 13:02 . @@ -155,14 +155,14 @@ Egy pár extra adatot is kapunk, de nekünk most a Most gyerünk vissza a `master` ágra a `git checkout <ág neve>` paranccsal. -```shell-session +```bash $ git checkout master Switched to branch 'master' ``` Most adjuk ismét ki az `ls -al` parancsot. -```shell-session +```bash $ ls -al total 20 drwxr-xr-x 3 blint blint 4096 Mar 20 13:16 . @@ -183,7 +183,7 @@ Ez elképesztően jó, ugyanis két teljesen külön álló munkát Írjuk a `gyumolcskosar` fájl végére, hogy `szolo` és mentsük el azzal az üzenettel, hogy `Tettem a kosaramba szőlőt`. -```shell-session +```bash $ git commit -m "Tettem a kosaramba szőlőt" [master c8496bf] Tettem a kosaramba szőlőt 1 file changed, 1 insertion(+) @@ -211,7 +211,7 @@ $ git log --graph --oneline --all * c8496bf (HEAD -> master) Tettem a kosaramba szőlőt | * 07ac740 (atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz -|/ +|/ * 996698c jegyzeteim ignorálása * 36552bc Hoztunk egy hordót is * a8a9b26 Raktam bele egy körtét @@ -227,19 +227,19 @@ Még vizuálisabban jelenleg így állunk: Menjünk vissza az `atnevezes` ágra és módosítsunk picit. -```shell-session +```bash $ git checkout atnevezes ``` Majd pedig nevezzük át a `hordo`-t `hordo.txt`-re. -```shell-session +```bash $ mv hordo hordo.txt ``` És ezt is mentsük el -```shell-session +```bash $ git add . $ git commit -m "Adtam kiterjesztést a hordónak" ``` @@ -252,14 +252,14 @@ $ git log --graph --oneline --all * c040bc1 (HEAD -> atnevezes) Adtam kiterjesztést a hordónak * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz | * c8496bf (master) Tettem a kosaramba szőlőt -|/ +|/ * 996698c jegyzeteim ignorálása * 36552bc Hoztunk egy hordót is * a8a9b26 Raktam bele egy körtét * 2a685fc Készítettem egy gyümölcskosarat ``` -#### Mergelés +## Mergelés Az egyik legfontosabb dolog az ágak létrehozása után, hogy be tudjuk olvasztani az águnk valahova. @@ -271,14 +271,14 @@ megpróbálja beolvasztani oda ahol épp a `HEAD` mutatónk van. Gyerünk is át a `master` ágra. -```shell-session +```bash $ git checkout master Switched to branch 'master' ``` Ezután pedig mergeljük át a `master`-re az `atnevezes` ágat. -```shell-session +```bash git merge atnevezes ``` @@ -289,7 +289,7 @@ jó úgy. A merge lefut és láthatjuk mi is történt: -``` +```bash $ git merge atnevezes Merge made by the 'recursive' strategy. ") Hozz\303\241adtam a txt kiterjeszt\303\251st a gy\303\274m\303\266lcskosar f\303\241jlhoz" | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ @@ -303,13 +303,13 @@ Merge made by the 'recursive' strategy. Most egy újabb `git log --graph --oneline --all`-al ezt láthatjuk: -``` +```bash * e4b5d9d (HEAD -> master) Merge branch 'atnevezes' -|\ +|\ | * c040bc1 (atnevezes) Adtam kiterjesztést a hordónak | * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz * | c8496bf Tettem a kosaramba szőlőt -|/ +|/ * 996698c jegyzeteim ignorálása * 36552bc Hoztunk egy hordót is * a8a9b26 Raktam bele egy körtét @@ -319,7 +319,7 @@ Most egy újabb `git log --graph --oneline --all`-al ezt láthatjuk: Ez a bizonyos `merge commit` egyszerre mutat a két ág tartalmára. -#### Merge conflict +## Merge conflict Mi van akkor ha ketten egyszerre ugyanazt változtatjuk? Úgy döntöttünk, hogy pálinkát szeretnénk főzni Rickel, @@ -329,14 +329,14 @@ Gyerünk át a saját águnkra, de egy paranccsal. Ezt a `-b` kapcsolóval tudjuk elérni a `git checkout` mellett. -``` +```bash $ git checkout -b blint ``` Most egy újabb `git branch` kiadásával már látható, hogy 3 ággal rendelkezünk. -``` +```bash atnevezes * blint master @@ -344,14 +344,14 @@ Most egy újabb `git branch` kiadásával már látható, hogy Tegyünk bele a `hordo.txt`-be egy nekünk tetsző gyümölcsöt. -``` +```bash korte ``` Ezt mentsük is el, de most picit csaljunk és ne rakjuk `staged`-be, hanem azonnal mentsük el `-a` kapcsolót használva. -``` +```bash $ git commit -a -m "Raktam a hordóba körtét" ``` @@ -361,29 +361,30 @@ tegyük meg ott. Tehát: `hordo.txt`: -``` + +```bash szilva ``` Ezt is mentsük el. -``` +```bash $ git commit -a -m "Raktam szilvát a hordóba" ``` Most ha megnézzük a gráfunkat újra, akkor láthatjuk is, hogy mi a helyzet: -``` +```bash $ git log --graph --oneline --all * 85744ad (HEAD -> master) Raktam szilvát a hordóba * e4b5d9d (blint) Merge branch 'atnevezes' -|\ +|\ | * c040bc1 (atnevezes) Adtam kiterjesztést a hordónak | * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz * | c8496bf Tettem a kosaramba szőlőt -|/ +|/ * 996698c jegyzeteim ignorálása * 36552bc Hoztunk egy hordót is * a8a9b26 Raktam bele egy körtét @@ -392,7 +393,7 @@ $ git log --graph --oneline --all Na és akkor most mergeljünk be a master-re a módosításaink. -``` +```bash $ git merge blint Auto-merging hordo.txt CONFLICT (content): Merge conflict in hordo.txt @@ -409,7 +410,7 @@ Ezeket a kérdéseket nekünk kell megválaszolnunk. Először nézzük meg, mi a státusz. -``` +```bash $ git status On branch master You have unmerged paths. @@ -429,7 +430,7 @@ Szóval nem kell megijedni, csak átírjuk mi kell nekünk és mentünk egyet. Nézzük meg mi van a fájlunkban. -```hordo.txt +```diff title="hordo.txt" <<<<<<< HEAD szilva ======= @@ -441,14 +442,14 @@ Mit is jelent ez? Ketté szedte az bejövő adatokat a git arra ahová mergeltü (`HEAD`) és amit mergeltünk (`blint`). Köztük pedig egy sor "======="-t láthatunk. Itt már csak átírjuk a fájlt ahogy szeretnénk, hogy kinézzen. -``` +```txt korte ``` Nézzük meg mi a státusz ezután: -``` -git status +```bash +$ git status On branch master You have unmerged paths. (fix conflicts and run "git commit") @@ -464,13 +465,13 @@ no changes added to commit (use "git add" and/or "git commit -a") Továbbra is azt írja, amit az imént. Amíg nem commitoljuk a módosításunk, addig ezt is fogja. Hát akkor mentsünk. -``` +```bash git commit -a -m "blint branch mergelve és konflikt megoldva" ``` Nézzük meg hogy néz ki a gráfunk ezután. -``` +```bash * 7341274 (HEAD -> master) blint branch mergelve és konflikt megoldva |\ diff --git a/app/docs/guides/training/git/07_basics_and_ssh.md b/app/docs/guides/training/git/07_basics_and_ssh.md index 684eb25a65042f9bd265ef8ad6ec41bfb3ebd57d..fc203727c7ba6f8c8d92da09c4851418c5e8ba96 100644 --- a/app/docs/guides/training/git/07_basics_and_ssh.md +++ b/app/docs/guides/training/git/07_basics_and_ssh.md @@ -1,6 +1,6 @@ # Alapok és SSH kulcs -### Alapok +## Alapok Hogyan lehet a mi `.git` mappánkat megosztani a nagyvilággal? @@ -13,7 +13,7 @@ valahonnan lehúzzunk egy git repo-t. Ha például csak egy mappára utalunk, aminek a neve `awesome_project.git`: -``` +```bash $ git clone --bare awesome_project awesome_project.git Cloning into bare repository 'awesome_project.git'... done. @@ -26,7 +26,7 @@ kellő repo-t. Ilyenkor HTTP protokollt használhatunk, ami hasonló az előzőhöz és olyan, mint mikor egy fájlt töltünk le egy oldalról. -``` +```bash $ git clone https://git.sch.bme.hu/blintmester/git-presentation.git Cloning into 'git-presentation'... remote: Enumerating objects: 173, done. @@ -42,7 +42,7 @@ amit az előzőkben csináltunk kézzel. Lemásolja a .git mappát, majd pedig onnan kiszedi a megfelelő dolgokat a mi `work tree`-nkbe. -### SSH +## SSH Másik protokoll amit tudunk használni az az SSH. Ez azért nagyon jó, mert ha ezen keresztül szedünk le, @@ -74,9 +74,9 @@ az adatokat Nagyon király dolog, mivel gyors, hatékony és nem kell jelszót beírogatni minden művelet közt -#### Saját SSH kulcs +## Saját SSH kulcs -###### Linuxon / MacOS-en +### Linuxon / MacOS-en 1. Terminált megnyitjuk 2. Generálunk egy SSH kulcsot @@ -88,30 +88,30 @@ jelszót beírogatni minden művelet közt Adjuk hozzá az SSH agent-ünkhöz. -1. Elindítjuk az agent-et ha még nem ment volna +1. Elindítjuk az agent-et ha még nem ment volna `$ eval "$(ssh-agent -s)"` `Agent pid 59566` -2. Hozzáadjuk az új kulcsunk +2. Hozzáadjuk az új kulcsunk `ssh-add ~/.ssh/id_rsa` Végezetül a publikus kulcsot feltöltjük például githubra A publikus kulcs helye: `~/ssh/id_rsa.pub` -###### Windowson +### Windowson 1. Git Bash-t megnyitjuk -2. Generálunk egy kulcsot +2. Generálunk egy kulcsot `ssh-keygen -t rsa -b 4096` 3. Elmentjük az alapértelmezett helyre 4. Jelszó adunk hozzá ha szeretnénk Hozzá adjuk az SSH agent-ünkhöz -1. Elindítjuk az agent-et ha még nem ment volna - `$ eval $(ssh-agent -s)` +1. Elindítjuk az agent-et ha még nem ment volna + `$ eval $(ssh-agent -s)` `> Agent pid 59566` -2. Hozzáadjuk az új kulcsunk +2. Hozzáadjuk az új kulcsunk `ssh-add ~/.ssh/id_rsa` Végezetül a publikus kulcsot feltöltjük például githubra diff --git a/app/docs/guides/training/git/08_segedlet.md b/app/docs/guides/training/git/08_segedlet.md deleted file mode 100644 index 35f4253cab74554b645a26e2b1bac3034a71d1bd..0000000000000000000000000000000000000000 --- a/app/docs/guides/training/git/08_segedlet.md +++ /dev/null @@ -1,142 +0,0 @@ -# Segédlet - -## 0. GitSCH - -Mutassátok meg neki a [GitSCH](https://git.sch.bme.hu/)-t. Némá', ez olyan mint a [GitLab](https://gitlab.com/)! - -### Dolgok felfedezése - -Először kattintsanak a jobb felső sarokban a profiljukra, és nézzék meg miket látnak ott. - -<div style={{textAlign: 'center'}}> -<img src={require('./img/1.png').default} alt="Jobb felső sarok izé" /> -</div> - -#### Profil - -Érdemes nekik megmutatnotok a saját profilotokon, hogy rákattintotok a felhasználónevetekre, és behozza, mennyire voltatok aktívak az elmúlt időben git szerint, személyes projekteket, etc... nekik ez nem biztos hogy annyira szép lesz, hiszen valószínűleg nem használták még. - -#### Státusz - -0 perces művelet, de tök szórakoztató, állíttatsatok be velük státuszt. Mutassátok meg, hogy emojikat is be lehet állítani, etc... Legyenek kicsit vidámak tőle! - -#### Beállítások - -Az edit profile és a preferences-t is megmutathatjátok nekik, DE ne ezek beállításával húzzátok el az időtöket. - -Esetleg a témát beállíttathatjátok velük, az nem sok idő és nem fáj, cserébe kényelmes. - -### SSH kulcs hozzáadása a profilhoz - -Ami fontos, legalábbis kényelmes, de nagyon, adjanak hozzá egy ssh-kulcsot a profiljukhoz. Ezt a `preferences/SSH Keys` alatt találják meg. -Akinek nincs meg teljesen az SSH, és az SSH kulcs fogalma, azt irányítástok át a [linuxos előadás](http://home.sch.bme.hu/~mikewashere/linux/#/) ide [passzoló fejezetéhez](http://home.sch.bme.hu/~mikewashere/linux/#/m%C3%A1sodik%20vide%C3%B3#t%C3%A1voli-hozz%C3%A1f%C3%A9r%C3%A9s-ssh), illetve meséljétek el nekik röviden mi is ez, (hogyan működik) hogyan kell használni. -Gites előadás [ide kapcsolódó része](http://home.sch.bme.hu/~blintmester/git/#/guide/remote/1_basics). - -## 1. új repó - -Kérjetek meg valakit (NE TI LEGYETEK!), hogy hozzon létre egy új projektet. Ezen vezessétek végig a csapatot, jó lenne, ha screensharingel menne végig, a többiek is lássák. - -### Lépések - -Ennek a lépései: - - nagy kék gomb (new project) névvel - - bal felső opció (create blank project) - - töltsétek ki a field-eket - - projekt név lehet bármit, lehet benne ékezet, szóköz, etc... - - figyeljék meg, hogy `project slug` hogyan változik a beírt név hatására - - mondjátok el, hogy a `project slug`-ot is módosíthatják még ilyenkor (később már asszem nem lehet, vagy naaaagyon fájdalmas) - - meséljétek el a láthatóság fontosságát - - private: nem látja más, csak te, meg akiket meghívsz, hogy lássák (ÍGY hozzák létre először, később majd fogjuk állítani!) - - internal: sch domainen belül (akinek van hozzáférése a GitSCH-hoz) mindenki látja - - public: mindenki látja, Özséb néni is Romániából - - az `Initialize repository with a README`-t tanulják meg, hogy kényelmes nem bekapcsolni, ekkor a Git* segít a létrejött projek lokális bekonfigurálásában (egész hasznos, mi?) - - hozzátok létre a projektet - -### Tagok hozzáadása - -Ahhoz hogy más is hozzáférjen a repohoz, hozzá kell adni a többieket, hiszen private-ként hoztuk létre. -Tegyük is meg, baloldalt a sávon a Members-re kattintva kapunk egy felületet, ahol ezt megtehetjük. - -Láthatjuk, hogy embereket, valamint csoportokat is hozzá tudunk adni. Ha valaki megkérdezi, mesélhettek a csoportokról is, vagy irányítsátok hozzám. - -Kérjétek meg a projekt tulajdonost, hogy vegyen fel Titeket és engem mint owner, hogy tudjunk segíteni ha szükség lenne rá, valamint a többieket, mint developer/maintainer, ezt már döntsék el ők maguk. - -A [role-ok](https://git.sch.bme.hu/help/user/permissions)ról itt olvashatnak, azért egész beszédes. - -## 2. Klónozzás - -Klónozzák le a repót, ehhez segítséget nyújt a GitLab is, valamint itt van egy leírás: - -``` -git clone git@git.sch.bme.hu:blintmester/projektem.git -cd projektem -touch README.md -git add README.md -git commit -m "add README" -git push -u origin master -``` - -Persze cseréljétek ki a dolgokat az aktuális projektre! - -## 3. Pythonos webszerver - -Készítsetek el közösen egy basic pythonos webszervert. Segédletnek használhatjátok Lackó [pythonos segédletét](https://home.sch.bme.hu/~rlacko/python3/#/guide/10_exercise#2-%C3%ADrj%C3%A1tok-meg-a-saj%C3%A1t-hanyadikh%C3%A9tvan-apitokat). - -Persze ne lemásoljátok, hanem használjátok fel okosan! - -Itt egy mintamegoldás: - -```python -import flask - -app = flask.Flask(__name__) - -app.config["DEBUG"] = True - -@app.route('/', methods=['GET']) -def home(): - return """ - <html> - <head> - <meta charset="utf-8" /> - <title>Gites meme</title> - </head> - <body> - <h1>Hello Git</h1> - <p>Ez egy basic oldal</p> - </body> - </html> - """ -app.run() -``` - -Fontos, vagy venv-el, vagy lokálisan tegyék fel a flask-et, hogy tudják használni. - -Kipróbálni a `python3 git.py`-al tudják, megnézni az eredményt pedig a `http://localhost:5000/`. - -## 4. branch-ek - -Hozzanak létre saját branch-eket. Ezt a [videó](https://youtu.be/gU0yjbZR8lY)ban és a [jegyzet ](https://home.sch.bme.hu/~blintmester/git)ben is olvashatják, hogy kell. - -```shell-session -$ git checkout -b <username vagy amit akartok> -``` - -## 5. jogok megint - -Állítsák be, hogy a repo internal szinten elérhető legyen. - -### Feladat - -Mindenki készítsen egy nagyon egyszerű html-t a saját branch-én, commitolják, és a legvégén merge-elhetitek. - -## 6. Házi feladat - -### Alap - -Kaptok egy [repo](https://git.sch.bme.hu/KSZKepzes/cicas-kepek)-t, azt el kell forkolni, és saját képet kell feltölteni. - -### Expert - -Készítsetek pipeline-t a gyakorlat repo-jához, és csináljatok autodeploy-t a linux-os vm-etekre! - diff --git a/app/docs/guides/training/git/09_hazi.md b/app/docs/guides/training/git/09_hazi.md deleted file mode 100644 index dec1a34f696a8a9a3a13425f0a1bb5d35f582821..0000000000000000000000000000000000000000 --- a/app/docs/guides/training/git/09_hazi.md +++ /dev/null @@ -1,46 +0,0 @@ -# Házi segédlet - -<Note type="warning" label="Megjegyzés"> - -Nem kell gitlab runner-t telepítenetek a képződős vm-etekre! Nem kell azt bekötni git.sch-ra! - -A feladat annyi, hogy hozzatok létre egy `.gitlab-ci.yml`-t! - -</Note> - -## The easy way (recommended) - -Használjatok proxyjumpot és agent forward-ot! - -```shell-session -$ ssh -A -J userem@proxyjump.host userem@ahova-szeretnem-deployolni.host -``` - -Itt az `-A` az AgentForward miatt kell, a `-J` pedig hogy jumpolni akartok, azaz egy közbülső szerverről *elugrotok* a célba. - -Az `scp`-nek is van ám kapcsolója, amivel meg lehet adni, hogy ssh-agent-et továbbítson, valamint a proxyjumpot is be lehet neki állítani, keressétek ki, ha nagyon elakadnátok, akkor keressetek meg. - -Egy példa [`.gitlab-ci.yml`](https://gitlab.com/disappointment-industries/lamp/-/blob/master/.gitlab-ci.yml)-t belinkelek, de először próbáljátok megoldani magatoktól! - -## Kerberosos authentikáció (amúgy ezt ne akarjátok) - -<Note type="tip" label="Tipp"> - -Ne akarjátok nagyon! - -</Note> - -```shell-session -$ cd /afs/sch.bme.hu/home/<Schaccod>/.system/ -$ ktutil -> ktutil: addent -password -p username@domain.com -k 1 -e rc4-hmac - Password for username@domain.com: [enter your password] -> ktutil: addent -password -p username@domain.com -k 1 -e aes256-cts - Password for username@domain.com: [enter your password] -> ktutil: wkt username.keytab -> ktutil: quit - -``` - -Ha ezt választottátok mégis, akkor ennek nézzetek utánna jobban, mondjuk [ezt](https://stackoverflow.com/a/55826172/10044393) érdemes még elolvasni. -A git-es előadás [repo](https://git.sch.bme.hu/blintmester/git-presentation)jában ha megnézitek a [`.gitlab-ci.yml`](https://git.sch.bme.hu/blintmester/git-presentation/-/blob/master/.gitlab-ci.yml)-t, abból tudtok még segítséget találni. \ No newline at end of file diff --git a/app/docs/guides/training/git/img/me.jpg b/app/docs/guides/training/git/img/me.jpg index 4b57f90506201373b6994db9e3ab95340eb946a9..f6ee2219e8efea8da310600c7a909c19b63bbb4a 100644 --- a/app/docs/guides/training/git/img/me.jpg +++ b/app/docs/guides/training/git/img/me.jpg @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:eaa34e431ba444d44af87e7de1e36b8fdc88a0c6955508b6da03d6cc86b64d5f -size 6501562 +oid sha256:c34df014fcf9ef3365f61bd6ecca18712922e56a5e5b45ca32432cf7068b7f57 +size 195255 diff --git a/app/sidebars.js b/app/sidebars.js index 21f74da6615adbbf3e628c6317a8d7e5047280fb..d2332bf38d1a30bcac01ada4a98d032482f5ff1d 100644 --- a/app/sidebars.js +++ b/app/sidebars.js @@ -42,14 +42,15 @@ const sidebars = { }, items: [{ type: "autogenerated", dirName: "guides/training/python" }], }, - // { TODO - // type: "category", - // label: "Git", - // link: { - // type: "generated-index", - // }, - // items: [{ type: "autogenerated", dirName: "guides/training/git" }], - // }, + { + type: "category", + label: "Git", + link: { + type: "doc", + id: "guides/training/git/intro", + }, + items: [{ type: "autogenerated", dirName: "guides/training/git" }], + }, // { TODO // type: "category", // label: "Linux",