Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • rlacko/git-presentation
  • blintmester/git-presentation
2 results
Show changes
Commits on Source (20)
...@@ -13,13 +13,13 @@ home: ...@@ -13,13 +13,13 @@ home:
- cp .magic_ssh_config ~/.ssh/config - cp .magic_ssh_config ~/.ssh/config
script: script:
# AFS magic incoming # AFS magic incoming
- ssh rlacko@centaur.sch.bme.hu cp /afs/sch.bme.hu/home/rlacko/.system/rlacko.keytab /tmp/rlacko.keytab - ssh blintmester@centaur.sch.bme.hu cp /afs/sch.bme.hu/home/blintmester/.system/blintmester.keytab /tmp/blintmester.keytab
- ssh rlacko@centaur.sch.bme.hu kinit -k -t /tmp/rlacko.keytab rlacko - ssh blintmester@centaur.sch.bme.hu kinit -k -t /tmp/blintmester.keytab blintmester
- ssh rlacko@centaur.sch.bme.hu rm /tmp/rlacko.keytab - ssh blintmester@centaur.sch.bme.hu rm /tmp/blintmester.keytab
- ssh rlacko@centaur.sch.bme.hu aklog sch.bme.hu -k SCH.BME.HU - ssh blintmester@centaur.sch.bme.hu aklog sch.bme.hu -k SCH.BME.HU
- ssh rlacko@centaur.sch.bme.hu mkdir -p /home/rlacko/public_html/git - ssh blintmester@centaur.sch.bme.hu mkdir -p /home/blintmester/public_html/git
# actual work # actual work
- scp -r $PWD/* rlacko@centaur.sch.bme.hu:/home/rlacko/public_html/git/ - scp -r $PWD/* blintmester@centaur.sch.bme.hu:/home/blintmester/public_html/git/
only: only:
refs: refs:
- master - master
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="generator" content="pandoc">
<meta name="author" content="Réthelyi Bálint">
<title>Git előadás</title>
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, minimal-ui">
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/reset.css">
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/reveal.css">
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="https://unpkg.com/reveal.js@^4//dist/theme/black.css" id="theme">
</head>
<body>
<div class="reveal">
<div class="slides">
<section id="title-slide">
<h1 class="title">Git előadás</h1>
<p class="author">Réthelyi Bálint</p>
<p class="date">2021.03.28.</p>
</section>
<section id="sziasztok" class="slide level1">
<h1>Sziasztok</h1>
</section>
<section id="miről-is-lesz-ma-szó" class="slide level1">
<h1>Miről is lesz ma szó?</h1>
<h2 id="gyakorlaton">Gyakorlaton</h2>
<ul>
<li>megismerjük a GitSCH-t</li>
<li>létrehozunk új projektet</li>
<li>tagokat adunk hozzá a projekthez, jogosultságokat állítunk</li>
<li>első verziókövetett appunk</li>
</ul>
</section>
<section id="fork" class="slide level1">
<h1>Fork</h1>
<p>Rámentek a reponál a fork gombra és kész.</p>
<p>Ha megvagytok a módosítással, csináltok egy merge request-et.</p>
</section>
<section id="házi" class="slide level1">
<h1>Házi</h1>
<h2 id="alap">Alap</h2>
<p>Kaptok egy <a href="https://git.sch.bme.hu/KSZKepzes/cicas-kepek">repo</a>-t, azt el kell forkolni, és saját képet kell feltölteni.</p>
<h2 id="expert">Expert</h2>
<p>Készítsetek pipeline-t a gyakorlat repo-jához, és csináljatok autodeploy-t a linux-os vm-etekre!</p>
</section>
<section id="jó-munkát" class="slide level1">
<h1>Jó munkát!</h1>
</section>
</div>
</div>
<script src="https://unpkg.com/reveal.js@^4//dist/reveal.js"></script>
// reveal.js plugins
<script src="https://unpkg.com/reveal.js@^4//plugin/notes/notes.js"></script>
<script src="https://unpkg.com/reveal.js@^4//plugin/search/search.js"></script>
<script src="https://unpkg.com/reveal.js@^4//plugin/zoom/zoom.js"></script>
<script>
// Full list of configuration options available at:
// https://revealjs.com/config/
Reveal.initialize({
// Push each slide change to the browser history
history: true,
// reveal.js plugins
plugins: [
RevealNotes,
RevealSearch,
RevealZoom
]
});
</script>
</body>
</html>
% Git előadás
% Réthelyi Bálint
% 2021.03.28.
# Sziasztok
# Miről is lesz ma szó?
## Gyakorlaton
- megismerjük a GitSCH-t
- létrehozunk új projektet
- tagokat adunk hozzá a projekthez, jogosultságokat állítunk
- első verziókövetett appunk
# Fork
Rámentek a reponál a fork gombra és kész.
Ha megvagytok a módosítással, csináltok egy merge request-et.
# Házi
## 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!
# Jó munkát!
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.
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
# 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="text-align:center"><img src="guide/gyakorlat/img/1.png" 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!
# 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
guide/gyakorlat/img/1.png

14.2 KiB

...@@ -8,10 +8,8 @@ hogy a jövőben ne okozzon problémát a verziókezelés. ...@@ -8,10 +8,8 @@ hogy a jövőben ne okozzon problémát a verziókezelés.
Olyan kérdésekre fogok választ adni, mint "Miért kell Olyan kérdésekre fogok választ adni, mint "Miért kell
git-et használnom?", "Miért ilyen bonyolult ez az egész?" git-et használnom?", "Miért ilyen bonyolult ez az egész?"
és "Mégis mi a francot nyerek ezzel?". és "Mégis mi a francot nyerek ezzel?".
Ja és előre is bocsi a helyesírási hibákért, várom majd
a javításokat a dokumentáció [git repo-jába](https://github.com/rlacko58/gitPresentation) :)
Amire szükséged lesz: Egy konzol működő git-el ([Workshop elején](workshop/1_installation.md) Amire szükséged lesz: Egy konzol, működő git-el ([workshop elején](../workshop/1_installation.md)
van egy útmutató) van egy útmutató)
## Tippek ## Tippek
...@@ -24,18 +22,15 @@ belefektett munkát. ...@@ -24,18 +22,15 @@ belefektett munkát.
## Ki vagyok én? ## Ki vagyok én?
Rafael László (Lackó), harmadéves mérnökinformatikus Réthelyi Bálint (Blint), másod éves infós, jelenleg a reszortgazdaságis és kancellár, emellett lelkes szerversimogató és DevOps-os.
szoftverjlesztő speces hallgató. 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)).
Jelenleg a DevTeam körvezetője, de a KSZK többi körében
is aktívan tevékenykedem.
Manapság főleg webfejlesztéssel foglalkozom,
olyan projekteken dolgoztam, mint az AdminSCH
vagy a KSZK Újonc weboldala.
Ha bármi kérdésed merülne fel a doksi olvasása vagy az előadás Ha bármi kérdésed merülne fel a doksi olvasása vagy az előadás
során nyugodtan keress meg során nyugodtan keress meg
- Emailben: laszlo.rafael [kukac] kszk.bme.hu - Emailben: rethelyi.balint [kukac] kszk.bme.hu
<div style="text-align:center"><img src="guide/intro/img/me.jpg" alt="Kép magamról" /></div> <div style="text-align:center"><img src="guide/intro/img/me.jpg" alt="Kép magamról" /></div>
Forrás: [Pro Git könyv](https://git-scm.com/book/en/v2/) 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/)
...@@ -5,10 +5,10 @@ Talán a legegyszerűbb egy példán keresztül szemléltetni. ...@@ -5,10 +5,10 @@ Talán a legegyszerűbb egy példán keresztül szemléltetni.
Tegyük fel egy docx fájlt szerkesztünk és ezt hetente Tegyük fel egy docx fájlt szerkesztünk és ezt hetente
frissítve rendszeresen el kell küldenünk emailben valakinek. frissítve rendszeresen el kell küldenünk emailben valakinek.
Ilyenkor különböző verziók keletkeznek a fájlból és ezeket Ilyenkor különböző verziók keletkeznek a fájlból és ezeket
a postafiókunkból könnyedén előtudjuk szedni. a postafiókunkból könnyedén elő tudjuk szedni.
Na ugyanazen a példán tovább mehetünk. Na ugyanazen a példán tovább mehetünk.
Mi van ha lokális kezdjük ezeket a fájlokat tárolni? Mi van ha lokális kezdjük ezeket a fájlokat tárolni?
Gondolom mindenki találkozott már hasonló fájlnevekkel: Gondolom mindenki találkozott már hasonló fájlnevekkel:
``` ```
...@@ -25,8 +25,8 @@ Gondolom mindenki találkozott már hasonló fájlnevekkel: ...@@ -25,8 +25,8 @@ Gondolom mindenki találkozott már hasonló fájlnevekkel:
Ha ügyesek vagyunk még mappákat is készítünk és dátumot is hozzá cimkézünk. Ha ügyesek vagyunk még mappákat is készítünk és dátumot is hozzá cimkézünk.
``` ```
└── 2020 └── 2021
└── 09 └── 02
├── 13 ├── 13
│ └── elso_beadasom.docx │ └── elso_beadasom.docx
├── 19 ├── 19
...@@ -54,33 +54,33 @@ kézileg tettük. ...@@ -54,33 +54,33 @@ kézileg tettük.
#### Helyi #### Helyi
Erre a fenti példa legjobb példa. Erre a fenti példa a legjobb példa.
Vannak különböző verziói a fájlunknak és ezeket valamilyen Vannak különböző verziói a fájlunknak és ezeket valamilyen
adatbázisban rögzítjük. adatbázisban rögzítjük.
<div style="text-align:center"><img src="intro/img/vcstype_local.png" alt="Local Version Control Systems" /></div> <div style="text-align:center"><img src="guide/intro/img/vcstype_local.png" alt="Local Version Control Systems" /></div>
Ilyen az [RCS](https://www.gnu.org/software/rcs/) Ilyen az [RCS](https://www.gnu.org/software/rcs/).
### Központosított ### Központosított
Ez már egy fokkal okosabb. Ez már egy fokkal okosabb.
A különböző verziókat a központi szerverre rakjuk fel és A különböző verziókat a központi szerverre rakjuk fel és
onann szedjük le. onnan szedjük le.
Például van egy Fájlszerverünk amit minden gépről elérnek Például van egy Fájlszerverünk amit minden gépről elérnek
az emberek és oda dolgoznak közösen. az emberek és oda dolgoznak közösen...
Érezhető probléma, hogy így ha meghal a központi szerver, Érezhető probléma, hogy így ha meghal a központi szerver,
akkor mindent elvesztünk. 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, 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, szerencsére egy jó rendszernél erről értesítést kapunk,
hozzá és nem felülírjuk a módosításaink. hozzá és nem felülírjuk a módosításaink.
<div style="text-align:center"><img src="intro/img/vcstype_central.png" alt="Centralized Version Control Systems" /></div> <div style="text-align:center"><img src="guide/intro/img/vcstype_central.png" alt="Centralized Version Control Systems" /></div>
### Megosztott ### Megosztott
Na és itt lépünk be a ma is használt Git világába. 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 meg van 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 a teljes projekt az összes verziójával. Felmerül, hogy na
de akkor honnan szedjük le a legújabb verziót? 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 Különböző megoldások léteznek, például a fejlesztők a
...@@ -88,8 +88,8 @@ módosításokat azonnal megosztják egymással ...@@ -88,8 +88,8 @@ módosításokat azonnal megosztják egymással
(pl.: p2p Torrenthez hasonló módon) vagy (pl.: p2p Torrenthez hasonló módon) vagy
kijelölnek egy központi szervert amivel mindenki kijelölnek egy központi szervert amivel mindenki
szinkronban van. szinkronban van.
Ilyen központi szerver lehet például a Github vagy a Gitlab. Ilyen központi szerver lehet például a [Github](https://github.com/) vagy a [Gitlab](https://gitlab.com/).
Csak megjegyzem, de akár a módosításokat Emailben is ellehet Csak megjegyzem, akár a módosításokat emailben is el lehet
küldeni és a szoftver automatikusan megcsinálja a többi a mi részünkön. küldeni és a szoftver automatikusan megcsinálja a többit a mi részünkön.
<div style="text-align:center"><img src="intro/img/vcstype_distributed.png" alt="Distributed Version Control Systems" /></div> <div style="text-align:center"><img src="guide/intro/img/vcstype_distributed.png" alt="Distributed Version Control Systems" /></div>
...@@ -14,7 +14,7 @@ Aztán 2002-től egy zárt licenszű verzió kezelőre, a ...@@ -14,7 +14,7 @@ Aztán 2002-től egy zárt licenszű verzió kezelőre, a
Ezt a Linux fejlesztői ingyen használhatták egészen 2005-ig, 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 mikorra annyira elromlott a kapcsolat a fejlesztők és a cég
között, hogy elvették tőlük a licenszt. között, hogy elvették tőlük a licenszt.
Az i-re a pontott az tette le, mikor az egyik Az i-re a pontott az tette fel, mikor az egyik
kernel fejlesztő kernel fejlesztő
[reverse engineer-elte](https://lwn.net/Articles/132938/) [reverse engineer-elte](https://lwn.net/Articles/132938/)
a BitKeeper-t. a BitKeeper-t.
...@@ -22,11 +22,11 @@ Ekkoriban ...@@ -22,11 +22,11 @@ Ekkoriban
[Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds) [Linus Torvalds](https://en.wikipedia.org/wiki/Linus_Torvalds)
úgy döntött, hogy egy új megoldást kell találnia, mely úgy döntött, hogy egy új megoldást kell találnia, mely
- Gyors - gyors
- Egyszerű - egyszerű
- Támogatja a többszálú fejlesztést - támogatja a többszálú fejlesztést
- Teljesen elosztott - teljesen elosztott
- Nagy projekteket is képes kezelni (pl.: Linux kernel) - nagy projekteket is képes kezelni (pl.: Linux kernel)
Így hát megírta a [Git-et](https://en.wikipedia.org/wiki/Git), mely a mai napig a legelterjedtebb, leggyorsabb és Í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ünk. legkényelmesebb verzió kezelő rendszer.
guide/intro/img/me.jpg

58.2 KiB | W: 0px | H: 0px

guide/intro/img/me.jpg

6.2 MiB | W: 0px | H: 0px

guide/intro/img/me.jpg
guide/intro/img/me.jpg
guide/intro/img/me.jpg
guide/intro/img/me.jpg
  • 2-up
  • Swipe
  • Onion skin
...@@ -27,7 +27,7 @@ ami hasonló az előzőhöz és olyan, mint mikor egy fájlt ...@@ -27,7 +27,7 @@ ami hasonló az előzőhöz és olyan, mint mikor egy fájlt
töltünk le egy oldalról. töltünk le egy oldalról.
``` ```
$ git clone https://github.com/rlacko58/git-presentation.git $ git clone https://git.sch.bme.hu/blintmester/git-presentation.git
Cloning into 'git-presentation'... Cloning into 'git-presentation'...
remote: Enumerating objects: 173, done. remote: Enumerating objects: 173, done.
remote: Counting objects: 100% (173/173), done. remote: Counting objects: 100% (173/173), done.
......
...@@ -50,7 +50,7 @@ Legegyszerűbben ezzel a paranccsal lehet a jelenlegi konfig ...@@ -50,7 +50,7 @@ Legegyszerűbben ezzel a paranccsal lehet a jelenlegi konfig
fájlok helyzetét kiírni: fájlok helyzetét kiírni:
`git config --list --show-origin` `git config --list --show-origin`
Látható, hogy a konfigok valamilyen config fájlba menti Látható, hogy a konfigokat valamilyen config fájlba menti,
a fájlrendszerben elszórva. Erről egy pár táblázat: a fájlrendszerben elszórva. Erről egy pár táblázat:
##### Windows ##### Windows
...@@ -79,8 +79,16 @@ Nálam a konfig a home mappámban például így néz ki: ...@@ -79,8 +79,16 @@ Nálam a konfig a home mappámban például így néz ki:
``` ```
$ cat ~/.gitconfig $ cat ~/.gitconfig
[user] [user]
email = rlacko99 [AT] gmail.com name = Bálint Réthelyi
name = Rafael László email = rethelyibalint@gmail.com
signingkey = 6EA0C1AC38C567DE
[core]
editor = nvim
autocrlf = input
[pull]
rebase = true
[commit]
gpgsign = true
``` ```
### Állítsuk be a dolgokat magunknak ### Állítsuk be a dolgokat magunknak
...@@ -116,12 +124,13 @@ Nézzük meg az összes beállításunk: ...@@ -116,12 +124,13 @@ Nézzük meg az összes beállításunk:
``` ```
$ git config --list $ git config --list
user.email=rlacko99 [AT] gmail.com user.name=Bálint Réthelyi
user.name=Rafael László user.email=rethelyibalint@gmail.com
core.repositoryformatversion=0 user.signingkey=6EA0C1AC38C567DE
core.filemode=true core.editor=nvim
core.bare=false core.autocrlf=input
core.logallrefupdates=true pull.rebase=true
commit.gpgsign=true
... ...
``` ```
...@@ -129,5 +138,5 @@ Ha pedig csak egy adottat szeretnénk: ...@@ -129,5 +138,5 @@ Ha pedig csak egy adottat szeretnénk:
``` ```
$ git config user.name $ git config user.name
Rafael László Bálint Réthelyi
``` ```
...@@ -45,11 +45,11 @@ Tehát az a mappa, ahol van egy .git mappa, az egy git repo. ...@@ -45,11 +45,11 @@ Tehát az a mappa, ahol van egy .git mappa, az egy git repo.
``` ```
$ ls -al $ ls -al
total 20 total 20
drwxrwxr-x 4 rlacko rlacko 4096 okt 8 12:59 . drwxrwxr-x 4 blint blint 4096 okt 8 12:59 .
drwxrwxr-x 3 rlacko rlacko 4096 okt 7 12:04 .. drwxrwxr-x 3 blint blint 4096 okt 7 12:04 ..
drwxrwxr-x 5 rlacko rlacko 4096 okt 7 12:46 docs drwxrwxr-x 5 blint blint 4096 okt 7 12:46 docs
drwxrwxr-x 8 rlacko rlacko 4096 okt 8 16:39 .git drwxrwxr-x 8 blint blint 4096 okt 8 16:39 .git
-rw-r--r-- 1 rlacko rlacko 17 okt 7 12:09 README.md -rw-r--r-- 1 blint rlacko 17 okt 7 12:09 README.md
``` ```
...@@ -88,7 +88,17 @@ egy fa ága. ...@@ -88,7 +88,17 @@ egy fa ága.
``` ```
$ git init . $ git init .
Initialized empty Git repository in .../projektem/.git/ 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: git config --global init.defaultBranch <name>
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: git branch -m <name>
Initialized empty Git repository in /home/blint/Projects/random codes/git_pres_working_dir/projektem/.git/
``` ```
...@@ -97,9 +107,9 @@ Ha megnézzük, mostmár van egy .git mappánk ...@@ -97,9 +107,9 @@ Ha megnézzük, mostmár van egy .git mappánk
``` ```
$ ls -al $ ls -al
total 12 total 12
drwxrwxr-x 3 rlacko rlacko 4096 okt 8 16:52 . drwxr-xr-x 3 blint blint 4096 Mar 19 12:40 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 .. drwxr-xr-x 3 blint blint 4096 Mar 19 12:39 ..
drwxrwxr-x 7 rlacko rlacko 4096 okt 8 16:52 .git drwxr-xr-x 7 blint blint 4096 Mar 19 12:40 .git
``` ```
...@@ -136,9 +146,9 @@ majd a következő mentéskor pár bitet átírok, akkor már ...@@ -136,9 +146,9 @@ majd a következő mentéskor pár bitet átírok, akkor már
2gb-nyi videó lesz a repóban és ha utána egy másik mentésel 2gb-nyi videó lesz a repóban és ha utána egy másik mentésel
ki is töröljük, az attól még megmarad. ki is töröljük, az attól még megmarad.
Persze utólag tudunk olyat, hogy visszmegyünk és kitöröljük Persze utólag tudunk olyat, hogy visszmegyünk és kitöröljük
az adott mentésből. az adott mentésből (ezért nem jó ötlet git repo-ba 100 GB-os vm image-t felpush-olni, majd letörölni, hogy oops ez véletlen volt srácok).
Oké, tehát például mappákba bemásolja a mentéseinket valamilyen Oké, tehát például a mappákba bemásolja a mentéseinket valamilyen
módon, de mégis hova? módon, de mégis hova?
``` ```
...@@ -171,18 +181,18 @@ Hash-t láthatunk például a mentéspontjainkon, fájljainkon, stb. ...@@ -171,18 +181,18 @@ Hash-t láthatunk például a mentéspontjainkon, fájljainkon, stb.
Például itt egy ábra, hogy hogyan társítja a git egy Például itt egy ábra, hogy hogyan társítja a git egy
commit-hoz a megfelelő fájlokat egy kis pointer mágia keretében. commit-hoz a megfelelő fájlokat egy kis pointer mágia keretében.
<div style="text-align:center"><img src="workshop/img/commit-and-tree.png" alt="Commit and Tree" /></div> <div style="text-align:center"><img src="guide/workshop/img/commit-and-tree.png" alt="Commit and Tree" /></div>
Ennél jobban nem megyek bele a témába, de érdekes olvasmány. Ennél jobban nem megyek bele a témába, de érdekes olvasmány.
#### Változtatások mentése #### Változtatások mentése
Hogyan néz ki egy mentés? Hogyan néz ki egy mentés (a `git log`-al tudod megnézni)?
``` ```
commit c45abc3d64c7840b4088b77d5a60d02198a78854 commit e334ae2e8c4104429ff034152e622851a25c3a97
Author: Rafael László <rlacko99 [AT] gmail.com> Author: blint <blintmester@sch.bme.hu>
Date: Thu Oct 8 17:19:28 2020 +0200 Date: Thu Mar 18 15:37:54 2021 +0100
Készítettem egy gyümölcskosarat Készítettem egy gyümölcskosarat
``` ```
...@@ -204,7 +214,7 @@ repo-ban. ...@@ -204,7 +214,7 @@ repo-ban.
Nézzük meg ezen az ábrán és egy példa projekten keresztül: Nézzük meg ezen az ábrán és egy példa projekten keresztül:
<div style="text-align:center"><img src="workshop/img/git_lifecycle.png" alt="Git Life cycle" /></div> <div style="text-align:center"><img src="guide/workshop/img/git_lifecycle.png" alt="Git Life cycle" /></div>
Mi a jelenlegi helyzet a frissen inicializált repo-ban? Mi a jelenlegi helyzet a frissen inicializált repo-ban?
...@@ -246,10 +256,10 @@ nothing added to commit but untracked files present (use "git add" to track) ...@@ -246,10 +256,10 @@ nothing added to commit but untracked files present (use "git add" to track)
``` ```
Ahhoz, hogy git alá helyezzük, a `git add <fájl>` parancsot Ahhoz, hogy git alá helyezzük, a `git add <fájl>` parancsot
fogjuk kiadni. fogjuk kiadni.
_Ezek a parancsok mind képesek rá, hogy _Ezek a parancsok mind képesek rá, hogy
Unix-os módon több fájlra is kiadhatóak legyenek. 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 Például a `<fájl>` lehet `*.jpg`amivel minden .jpg fájlt kijelölünk a jelenlegi mappában._ - Linux magic #02
``` ```
$ git add gyumolcskosar $ git add gyumolcskosar
...@@ -319,7 +329,7 @@ mit elmenteni. ...@@ -319,7 +329,7 @@ mit elmenteni.
Nézzük meg a további két állapotot is amiben lehet egy fájl. Nézzük meg a további két állapotot is amiben lehet egy fájl.
Írjuk bele a gyumolcskosar fájlba, hogy `korte` Írjuk bele a gyumolcskosar fájlba, hogy `korte`
```gyumolcskosar ```
alma alma
korte korte
``` ```
...@@ -339,7 +349,7 @@ no changes added to commit (use "git add" and/or "git commit -a") ...@@ -339,7 +349,7 @@ no changes added to commit (use "git add" and/or "git commit -a")
Látható, hogy mostmár `modified` a fájlunk, mentsük is el, Látható, hogy mostmár `modified` a fájlunk, mentsük is el,
de most picit másképp. A git és általában minden Unix de most picit másképp. A git és általában minden Unix
parancsnak áttudunk adni úgynevezett kapcsolókat. parancsnak át tudunk adni úgynevezett kapcsolókat.
Például `git commit -m <message>`. Például `git commit -m <message>`.
Ez annyit spórol meg nekünk, hogy nem kell szövegszerkesztőt Ez annyit spórol meg nekünk, hogy nem kell szövegszerkesztőt
megnyitnia a git-nek mikor új commit-ot készítünk, megnyitnia a git-nek mikor új commit-ot készítünk,
...@@ -349,8 +359,12 @@ hogy várjon egy szöveget, mint mentéshez kapcsolódó üzenet. ...@@ -349,8 +359,12 @@ hogy várjon egy szöveget, mint mentéshez kapcsolódó üzenet.
`-m: message, -a: all`, de tudunk hosszabb verziókat is `-m: message, -a: all`, de tudunk hosszabb verziókat is
használni, mint `--message, --all`. használni, mint `--message, --all`.
> Ne felejtsük el először stagelni a mentendő fájljaink egy <Note type="warning" label="Megjegyzés">
> `git add <fájl>` parancs kiadásával.
Ne felejtsük el először stagelni a mentendő fájljaink egy
`git add <fájl>` parancs kiadásával.
</Note>
``` ```
$ git add gyumolcskosar $ git add gyumolcskosar
...@@ -381,7 +395,19 @@ Láthatjuk, hogy a `jegyzeteim` fájl megjelent. ...@@ -381,7 +395,19 @@ Láthatjuk, hogy a `jegyzeteim` fájl megjelent.
Most írjuk be a fájl nevét a `.gitignore`-ba. Most írjuk be a fájl nevét a `.gitignore`-ba.
```.gitignore <Note type="tip" label="Tipp">
```shell-session
echo jegyzeteim.txt >> .gitingore
```
Itt a >> a hozzáfűzés miatt kell, hasznos ha nem írjuk felül az egész fájlt.
</Note>
`.gitignore`:
```
jegyzeteim.txt jegyzeteim.txt
``` ```
...@@ -420,7 +446,7 @@ Látható, hogy az eredeti fájlt "töröltük" és egy új ...@@ -420,7 +446,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 fájlt vettünk fel a repo-ba. Érdekes, mi lenne ha stagelnénk
a változtatásokat `git add .` -al? a változtatásokat `git add .` -al?
``` ```shell-session
$ git add . $ git add .
$ git status $ git status
On branch master On branch master
...@@ -442,27 +468,27 @@ A Git egyik legjobb parancsa a `git log` a `git status` után és ...@@ -442,27 +468,27 @@ A Git egyik legjobb parancsa a `git log` a `git status` után és
szeretném ha kipróbálnád. szeretném ha kipróbálnád.
``` ```
commit 80560db1f5a83496b80f1959fbcbae2ccfff320e (HEAD -> master) commit 996698cf3273800680c351df950ebe1fbaf5182a (HEAD -> master)
Author: Rafael László <rlacko99 [AT] gmail.com> Author: Bálint Réthelyi <rethelyibalint@gmail.com>
Date: Thu Oct 8 21:07:25 2020 +0200 Date: Sat Mar 20 13:02:20 2021 +0100
jegyzeteim ignorálása jegyzeteim ignorálása
commit 30bf35d36399e484b03090570e13cb95da92ab8b commit 36552bc9400d94f399bd505a566178a4c83e8abd
Author: Rafael László <rlacko99 [AT] gmail.com> Author: Bálint Réthelyi <rethelyibalint@gmail.com>
Date: Thu Oct 8 20:11:58 2020 +0200 Date: Sat Mar 20 13:00:32 2021 +0100
Hoztunk egy hordót Hoztunk egy hordót is
commit b677a8639193479157f7a576dffe0186b0dbe2c8 commit a8a9b268e50a784fb2e3c0d7422d4d8ccd638b64
Author: Rafael László <rlacko99 [AT] gmail.com> Author: Bálint Réthelyi <rethelyibalint@gmail.com>
Date: Thu Oct 8 17:33:07 2020 +0200 Date: Sat Mar 20 12:59:32 2021 +0100
Raktam bele egy körtét Raktam bele egy körtét
commit c45abc3d64c7840b4088b77d5a60d02198a78854 commit 2a685fcd1e66b11805570869f8f49d5c5ef3bca1
Author: Rafael László <rlacko99 [AT] gmail.com> Author: Bálint Réthelyi <rethelyibalint@gmail.com>
Date: Thu Oct 8 17:19:28 2020 +0200 Date: Sat Mar 20 12:12:40 2021 +0100
Készítettem egy gyümölcskosarat Készítettem egy gyümölcskosarat
``` ```
...@@ -475,10 +501,10 @@ Picit tegyük szebbé. Adjuk ki az előző parancsot a ...@@ -475,10 +501,10 @@ Picit tegyük szebbé. Adjuk ki az előző parancsot a
`--oneline` kapcsolóval. `--oneline` kapcsolóval.
``` ```
80560db (HEAD -> master) jegyzeteim ignorálása 996698c (HEAD -> master) jegyzeteim ignorálása
30bf35d Hoztunk egy hordót 36552bc Hoztunk egy hordót is
b677a86 Raktam bele egy körtét a8a9b26 Raktam bele egy körtét
c45abc3 Készítettem egy gyümölcskosarat 2a685fc Készítettem egy gyümölcskosarat
``` ```
Máris csak a lényeget látjuk. Az is látható, hogy csak 7 Máris csak a lényeget látjuk. Az is látható, hogy csak 7
......
# Branch-ek, elágazás # Branch-ek, elágazás
#### Mik azok a branch-ek? ## Mik azok a branch-ek?
Talán legegyszerűbb, ha előbb készítünk egyet. Talán legegyszerűbb, ha előbb készítünk egyet.
...@@ -82,7 +82,7 @@ Mentsük el ide a módosításaink ...@@ -82,7 +82,7 @@ Mentsük el ide a módosításaink
``` ```
$ git commit -m "Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz" $ git commit -m "Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz"
[atnevezes 7de1c94] 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(-) 1 file changed, 0 insertions(+), 0 deletions(-)
rename gyumolcskosar => gyumolcskosar.txt (100%) rename gyumolcskosar => gyumolcskosar.txt (100%)
``` ```
...@@ -91,20 +91,20 @@ Ezt követően ha kiadjuk a `git log --graph --oneline` parancsot, akkor ...@@ -91,20 +91,20 @@ Ezt követően ha kiadjuk a `git log --graph --oneline` parancsot, akkor
meg is láthatjuk a jelenlegi helyzetet a mi fánkban: meg is láthatjuk a jelenlegi helyzetet a mi fánkban:
``` ```
* 7de1c94 (HEAD -> atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz * 07ac740 (HEAD -> atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
* 80560db (master) jegyzeteim ignorálása * 996698c (master) jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót * 36552bc Hoztunk egy hordót is
* b677a86 Raktam bele egy körtét * a8a9b26 Raktam bele egy körtét
* c45abc3 Készítettem egy gyümölcskosarat * 2a685fc Készítettem egy gyümölcskosarat
``` ```
#### Hogy épül fel? ## Hogy épül fel?
Először is, ahhoz hogy tudja a git melyik mentéspont után Először is, ahhoz hogy tudja a git melyik mentéspont után
melyik jön, mutatókat használ ehhez az ábrához melyik jön, mutatókat használ ehhez az ábrához
hasonló módon: hasonló módon:
<div style="text-align:center"><img src="workshop/img/commits-and-parents.png" alt="Commits and parents" /></div> <div style="text-align:center"><img src="guide/workshop/img/commits-and-parents.png" alt="Commits and parents" /></div>
A mentéspontjaink az előzőre mutatnak. A mentéspontjaink az előzőre mutatnak.
Ahogy láthattuk az előző fejezetben, a mentéspontok pedig Ahogy láthattuk az előző fejezetben, a mentéspontok pedig
...@@ -113,7 +113,7 @@ mutatnak a megfelelő fájlokra amiket épp módosítottunk. ...@@ -113,7 +113,7 @@ mutatnak a megfelelő fájlokra amiket épp módosítottunk.
Vizsgáljuk meg a jelenlegi repo-nkat, hogy pontosan Vizsgáljuk meg a jelenlegi repo-nkat, hogy pontosan
mi merre is van. mi merre is van.
<div style="text-align:center"><img src="workshop/img/tree_with_one_branch.png" alt="Tree with one branch" /></div> <div style="text-align:center"><img src="guide/workshop/img/tree_with_one_branch.png" alt="Tree with one branch" /></div>
A mentéspontok képesek mutatni az előzőre, ezt láthatjuk A mentéspontok képesek mutatni az előzőre, ezt láthatjuk
az ábrán. az ábrán.
...@@ -133,16 +133,16 @@ előtt átváltsunk a megfelelő ágra. ...@@ -133,16 +133,16 @@ előtt átváltsunk a megfelelő ágra.
Még mielőtt vissza mennénk a master-re, nézzük meg milyen Még mielőtt vissza mennénk a master-re, nézzük meg milyen
fájljaink vannak az `ls -al` -el. fájljaink vannak az `ls -al` -el.
``` ```shell-session
$ ls -al $ ls -al
total 20 total 20
drwxrwxr-x 3 rlacko rlacko 4096 okt 8 21:07 . drwxr-xr-x 3 blint blint 4096 Mar 20 13:02 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 .. drwxr-xr-x 3 blint blint 4096 Mar 19 12:39 ..
drwxrwxr-x 8 rlacko rlacko 4096 okt 9 15:01 .git drwxr-xr-x 8 blint blint 4096 Mar 20 13:12 .git
-rw-rw-r-- 1 rlacko rlacko 15 okt 8 20:43 .gitignore -rw-r--r-- 1 blint blint 15 Mar 20 13:01 .gitignore
-rw-rw-r-- 1 rlacko rlacko 11 okt 8 17:29 gyumolcskosar.txt -rw-r--r-- 1 blint blint 11 Mar 20 12:58 gyumolcskosar.txt
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:09 hordo -rw-r--r-- 1 blint blint 0 Mar 20 12:59 hordo
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:42 jegyzeteim.txt -rw-r--r-- 1 blint blint 0 Mar 20 13:01 jegyzeteim.txt
``` ```
Egy pár extra adatot is kapunk, de nekünk most a Egy pár extra adatot is kapunk, de nekünk most a
...@@ -151,23 +151,23 @@ Egy pár extra adatot is kapunk, de nekünk most a ...@@ -151,23 +151,23 @@ Egy pár extra adatot is kapunk, de nekünk most a
Most gyerünk vissza a `master` ágra a `git checkout <ág neve>` Most gyerünk vissza a `master` ágra a `git checkout <ág neve>`
paranccsal. paranccsal.
``` ```shell-session
$ git checkout master $ git checkout master
Switched to branch 'master' Switched to branch 'master'
``` ```
Most adjuk ismét ki az `ls -al` parancsot. Most adjuk ismét ki az `ls -al` parancsot.
``` ```shell-session
$ ls -al $ ls -al
total 20 total 20
drwxrwxr-x 3 rlacko rlacko 4096 okt 9 15:24 . drwxr-xr-x 3 blint blint 4096 Mar 20 13:16 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 .. drwxr-xr-x 3 blint blint 4096 Mar 19 12:39 ..
drwxrwxr-x 8 rlacko rlacko 4096 okt 9 15:24 .git drwxr-xr-x 8 blint blint 4096 Mar 20 13:16 .git
-rw-rw-r-- 1 rlacko rlacko 15 okt 8 20:43 .gitignore -rw-r--r-- 1 blint blint 15 Mar 20 13:01 .gitignore
-rw-rw-r-- 1 rlacko rlacko 11 okt 9 15:24 gyumolcskosar -rw-r--r-- 1 blint blint 11 Mar 20 13:16 gyumolcskosar
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:09 hordo -rw-r--r-- 1 blint blint 0 Mar 20 12:59 hordo
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:42 jegyzeteim.txt -rw-r--r-- 1 blint blint 0 Mar 20 13:01 jegyzeteim.txt
``` ```
Látható, hogy vissza léptünk arra az állapotra mikor még Látható, hogy vissza léptünk arra az állapotra mikor még
...@@ -179,9 +179,9 @@ Ez elképesztően jó, ugyanis két teljesen külön álló munkát ...@@ -179,9 +179,9 @@ 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 Írjuk a `gyumolcskosar` fájl végére, hogy `szolo` és mentsük el
azzal az üzenettel, hogy `Tettem a kosaramba szőlőt`. azzal az üzenettel, hogy `Tettem a kosaramba szőlőt`.
``` ```shell-session
$ git commit -m "Tettem a kosaramba szőlőt" $ git commit -m "Tettem a kosaramba szőlőt"
[master 932cbeb] Tettem a kosaramba szőlőt [master c8496bf] Tettem a kosaramba szőlőt
1 file changed, 1 insertion(+) 1 file changed, 1 insertion(+)
``` ```
...@@ -191,9 +191,9 @@ már érdekesebb eredményt láthatunk. ...@@ -191,9 +191,9 @@ már érdekesebb eredményt láthatunk.
``` ```
$ git log --graph --oneline $ git log --graph --oneline
* 15719cf (HEAD -> master) Tettem a kosaramba szőlőt * c8496bf (HEAD -> master) Tettem a kosaramba szőlőt
* 80560db jegyzeteim ignorálása * 996698c jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót * 36552bc Hoztunk egy hordót is
... ...
``` ```
...@@ -205,34 +205,35 @@ Hogy lássuk a másik ágat is, tegyük hozzá a `--all` kapcsolót. ...@@ -205,34 +205,35 @@ Hogy lássuk a másik ágat is, tegyük hozzá a `--all` kapcsolót.
``` ```
$ git log --graph --oneline --all $ git log --graph --oneline --all
* 15719cf (HEAD -> master) Tettem a kosaramba szőlőt * c8496bf (HEAD -> master) Tettem a kosaramba szőlőt
| * 7de1c94 (atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz | * 07ac740 (atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
|/ |/
* 80560db jegyzeteim ignorálása * 996698c jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót * 36552bc Hoztunk egy hordót is
... * a8a9b26 Raktam bele egy körtét
* 2a685fc Készítettem egy gyümölcskosarat
``` ```
Na így már látjuk a másik ágat is. Na így már látjuk a másik ágat is.
Még vizuálisabban jelenleg így állunk: Még vizuálisabban jelenleg így állunk:
<div style="text-align:center"><img src="workshop/img/tree_awesome.png" alt="Tree with one branch" /></div> <div style="text-align:center"><img src="guide/workshop/img/tree_awesome.png" alt="Tree with one branch" /></div>
Menjünk vissza az `atnevezes` ágra és módosítsunk picit. Menjünk vissza az `atnevezes` ágra és módosítsunk picit.
``` ```shell-session
$ git checkout atnevezes $ git checkout atnevezes
``` ```
Majd pedig nevezzük át a `hordo`-t `hordo.txt`-re. Majd pedig nevezzük át a `hordo`-t `hordo.txt`-re.
``` ```shell-session
$ mv hordo hordo.txt $ mv hordo hordo.txt
``` ```
És ezt is mentsük el És ezt is mentsük el
``` ```shell-session
$ git add . $ git add .
$ git commit -m "Adtam kiterjesztést a hordónak" $ git commit -m "Adtam kiterjesztést a hordónak"
``` ```
...@@ -242,17 +243,20 @@ Egy ismételt `git log`-al láthatjuk is a fánkat. ...@@ -242,17 +243,20 @@ Egy ismételt `git log`-al láthatjuk is a fánkat.
``` ```
$ git log --graph --oneline --all $ git log --graph --oneline --all
* 9dcfc79 (HEAD -> atnevezes) Adtam kiterjesztést a hordónak * c040bc1 (HEAD -> atnevezes) Adtam kiterjesztést a hordónak
* 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
| * 15719cf (master) Tettem a kosaramba szőlőt | * c8496bf (master) Tettem a kosaramba szőlőt
|/ |/
* 80560db jegyzeteim ignorálása * 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 Az egyik legfontosabb dolog az ágak létrehozása után, hogy
betudjuk olvasztani az águnk valahova. be tudjuk olvasztani az águnk valahova.
Az lenne a feladat, hogy a `master`-re beillesszük az Az lenne a feladat, hogy a `master`-re beillesszük az
`atnevezes` ágon végzett módosításaink. `atnevezes` ágon végzett módosításaink.
Ehhez a `git merge <branch neve>` parancsot használhatjuk. Ehhez a `git merge <branch neve>` parancsot használhatjuk.
...@@ -261,55 +265,58 @@ megpróbálja beolvasztani oda ahol épp a `HEAD` mutatónk van. ...@@ -261,55 +265,58 @@ megpróbálja beolvasztani oda ahol épp a `HEAD` mutatónk van.
Gyerünk is át a `master` ágra. Gyerünk is át a `master` ágra.
``` ```shell-session
$ git checkout master $ git checkout master
Switched to branch 'master' Switched to branch 'master'
``` ```
Ezután pedig mergeljük át a `master`-re az `atnevezes` ágat. Ezután pedig mergeljük át a `master`-re az `atnevezes` ágat.
``` ```shell-session
git merge atnevezes git merge atnevezes
``` ```
Ekkor meg fog nyílni a szövegszerkesztőnk, ugyanis egy Ekkor meg fog nyílni a szövegszerkesztőnk, ugyanis egy
új mentéspontot fogunk készíteni a `master águnkra`. új mentéspontot fogunk készíteni a `master` águnkra.
A feladott merge üzeneten nem kell módosítanünk, teljesen A feladott merge üzeneten nem kell módosítanunk, teljesen
jó úgy. jó úgy.
A merge lefut és láthatjuk mi is történt: A merge lefut és láthatjuk mi is történt:
``` ```
$ git merge atnevezes $ git merge atnevezes
Removing hordo
Merge made by the 'recursive' strategy. Merge made by the 'recursive' strategy.
gyumolcskosar => gyumolcskosar.txt | 0 ") Hozz\303\241adtam a txt kiterjeszt\303\251st a gy\303\274m\303\266lcskosar f\303\241jlhoz" | 248 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
hordo => hordo.txt | 0 gyumolcskosar => gyumolcskosar.txt | 0
2 files changed, 0 insertions(+), 0 deletions(-) hordo => hordo.txt | 0
3 files changed, 248 insertions(+)
create mode 100644 ") Hozz\303\241adtam a txt kiterjeszt\303\251st a gy\303\274m\303\266lcskosar f\303\241jlhoz"
rename gyumolcskosar => gyumolcskosar.txt (100%) rename gyumolcskosar => gyumolcskosar.txt (100%)
rename hordo => hordo.txt (100%) rename hordo => hordo.tx (100%)
``` ```
Most egy újabb `git log`-al ezt láthatjuk: Most egy újabb `git log --graph --oneline --all`-al ezt láthatjuk:
``` ```
* 366140d (HEAD -> master) Merge branch 'atnevezes' * e4b5d9d (HEAD -> master) Merge branch 'atnevezes'
|\ |\
| * 9dcfc79 (atnevezes) Adtam kiterjesztést a hordónak | * c040bc1 (atnevezes) Adtam kiterjesztést a hordónak
| * 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz | * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
* | 15719cf Tettem a kosaramba szőlőt * | c8496bf Tettem a kosaramba szőlőt
|/ |/
* 80560db jegyzeteim ignorálása * 996698c jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót * 36552bc Hoztunk egy hordót is
* a8a9b26 Raktam bele egy körtét
* 2a685fc Készítettem egy gyümölcskosarat
``` ```
Ez a bizonyos `merge commit` egyszerre mutat a két ág Ez a bizonyos `merge commit` egyszerre mutat a két ág
tartalmára. tartalmára.
#### Merge conlict #### Merge conflict
Mi van akkor ha ketten egyszerre ugyanazt változtatjuk? Mi van akkor ha ketten egyszerre ugyanazt változtatjuk?
Úgy döntöttünk, hogy pálinkát szeretnénk főzni józsival, Úgy döntöttünk, hogy pálinkát szeretnénk főzni Rickel,
szóval a hordóba teszünk ízlés szerint valami szóval a hordóba teszünk ízlés szerint valami
gyümölcsöt. gyümölcsöt.
Gyerünk át a saját águnkra, de egy paranccsal. Gyerünk át a saját águnkra, de egy paranccsal.
...@@ -317,7 +324,7 @@ Ezt a `-b` kapcsolóval tudjuk ...@@ -317,7 +324,7 @@ Ezt a `-b` kapcsolóval tudjuk
elérni a `git checkout` mellett. elérni a `git checkout` mellett.
``` ```
$ git checkout -b lacko $ git checkout -b blint
``` ```
Most egy újabb `git branch` kiadásával már látható, hogy Most egy újabb `git branch` kiadásával már látható, hogy
...@@ -325,13 +332,13 @@ Most egy újabb `git branch` kiadásával már látható, hogy ...@@ -325,13 +332,13 @@ Most egy újabb `git branch` kiadásával már látható, hogy
``` ```
atnevezes atnevezes
* lacko * blint
master master
``` ```
Tegyünk bele a `hordo.txt`-be egy nekünk tetsző gyümölcsöt. Tegyünk bele a `hordo.txt`-be egy nekünk tetsző gyümölcsöt.
```gyumolcs.txt ```
korte korte
``` ```
...@@ -342,13 +349,13 @@ Ezt mentsük is el, de most picit csaljunk és ne rakjuk ...@@ -342,13 +349,13 @@ Ezt mentsük is el, de most picit csaljunk és ne rakjuk
$ git commit -a -m "Raktam a hordóba körtét" $ git commit -a -m "Raktam a hordóba körtét"
``` ```
Úgy döntöttünk a szomszéd Józsi, hogy ugyanebbe a hordóba Úgy döntött a szomszéd Rick, hogy ugyanebbe a hordóba
körtét szeretne rakni. Menjünk át a master ágra és szilvát szeretne rakni. Menjünk át a master ágra és
tegyük meg ott. tegyük meg ott.
Azt mondta a szomszéd, hogy szilvát szeretne beletenni, szóval: Tehát:
`hordo.txt`:
```hordo.txt ```
szilva szilva
``` ```
...@@ -364,30 +371,29 @@ hogy mi a helyzet: ...@@ -364,30 +371,29 @@ hogy mi a helyzet:
``` ```
$ git log --graph --oneline --all $ git log --graph --oneline --all
* 41f1c05 (HEAD -> master) Raktam szilvát a hordóba * 85744ad (HEAD -> master) Raktam szilvát a hordóba
| * 6d6d1ac (lacko) Raktam a hordóba körtét * e4b5d9d (blint) Merge branch 'atnevezes'
|/ |\
* 366140d Merge branch 'atnevezes' | * c040bc1 (atnevezes) Adtam kiterjesztést a hordónak
|\ | * 07ac740 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
| * 9dcfc79 (atnevezes) Adtam kiterjesztést a hordónak * | c8496bf Tettem a kosaramba szőlőt
| * 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz |/
* | 15719cf Tettem a kosaramba szőlőt * 996698c jegyzeteim ignorálása
|/ * 36552bc Hoztunk egy hordót is
* 80560db jegyzeteim ignorálása * a8a9b26 Raktam bele egy körtét
* 30bf35d Hoztunk egy hordót * 2a685fc Készítettem egy gyümölcskosarat
...
``` ```
Na és akkor most mergeljünk be a master-re a módosításaink. Na és akkor most mergeljünk be a master-re a módosításaink.
``` ```
$ git merge lacko $ git merge blint
Auto-merging hordo.txt Auto-merging hordo.txt
CONFLICT (content): Merge conflict in hordo.txt CONFLICT (content): Merge conflict in hordo.txt
Automatic merge failed; fix conflicts and then commit the result. Automatic merge failed; fix conflicts and then commit the result.
``` ```
Oh! Merge conlict keletkezett. Oh! Merge conflict keletkezett.
Nem kell megijedni, nem a világ vége és a git segít ahol tud. 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 Az a helyzet, hogy egyszerre ugyanazt a sort módosítottuk és a git nem tudta
...@@ -395,7 +401,7 @@ eldönteni mit tegyen. Megtartsa az egyiket vagy mindkettőt? Mégis mi legyen? ...@@ -395,7 +401,7 @@ eldönteni mit tegyen. Megtartsa az egyiket vagy mindkettőt? Mégis mi legyen?
Ezeket a kérdéseket nekünk kell megválaszolnunk. Ezeket a kérdéseket nekünk kell megválaszolnunk.
Először nézzük meg, mit a státusz. Először nézzük meg, mi a státusz.
``` ```
$ git status $ git status
...@@ -422,14 +428,14 @@ Nézzük meg mi van a fájlunkban. ...@@ -422,14 +428,14 @@ Nézzük meg mi van a fájlunkban.
szilva szilva
======= =======
korte korte
>>>>>> lacko >>>>>> blint
``` ```
Mit is jelent ez? Ketté szedte az bejövő adatokat a git arra ahová mergeltünk Mit is jelent ez? Ketté szedte az bejövő adatokat a git arra ahová mergeltünk
(`HEAD`) és amit mergeltünk (`lacko`). Köztük pedig egy sor "======="-t láthatunk. (`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. Itt már csak átírjuk a fájlt ahogy szeretnénk, hogy kinézzen.
```hordo.txt ```
korte korte
``` ```
...@@ -453,15 +459,16 @@ Továbbra is azt írja, amit az imént. Amíg nem commitoljuk a módosításunk, ...@@ -453,15 +459,16 @@ 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. addig ezt is fogja. Hát akkor mentsünk.
``` ```
git commit -a -m "lacko branch mergelve és konflikt megoldva" git commit -a -m "blint branch mergelve és konflikt megoldva"
``` ```
Nézzük meg hogy néz ki a gráfunk ezután. Nézzük meg hogy néz ki a gráfunk ezután.
``` ```
* 7341274 (HEAD -> master) lacko branch mergelve és konflikt megoldva * 7341274 (HEAD -> master) blint
branch mergelve és konflikt megoldva
|\ |\
| * 6d6d1ac (lacko) Raktam a hordóba körtét | * 6d6d1ac (blint) Raktam a hordóba körtét
* | 41f1c05 Raktam szilvát a hordóba * | 41f1c05 Raktam szilvát a hordóba
|/ |/
* 366140d Merge branch 'atnevezes' * 366140d Merge branch 'atnevezes'
......
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
}, },
{ {
title: 'GitSCH', title: 'GitSCH',
link: 'https://git.sch.bme.hu/rlacko/git-presentation', link: 'https://git.sch.bme.hu/blintmester/git-presentation',
}, },
], ],
sidebar: [ sidebar: [
...@@ -79,7 +79,7 @@ ...@@ -79,7 +79,7 @@
], ],
}, },
{ {
title: 'Távoli Repository', title: 'Távoli repository',
children: [ children: [
{ {
title: 'Alapok és SSH kulcs', title: 'Alapok és SSH kulcs',
...@@ -87,6 +87,19 @@ ...@@ -87,6 +87,19 @@
}, },
], ],
}, },
{
title: 'Gyakorlat',
children: [
{
title: 'Gyakorlat és házi feladat',
link: '/guide/gyakorlat/1_segedlet',
},
{
title: 'Expert segédlet',
link: '/guide/gyakorlat/2_hazi',
},
],
},
], ],
fetchOptions: { cache: 'no-cache' }, fetchOptions: { cache: 'no-cache' },
}); });
......