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
Showing with 1028 additions and 10 deletions
# Alapok és SSH kulcs
### Alapok
Hogyan lehet a mi `.git` mappánkat megosztani a nagyvilággal?
Több módja is van ennek, például akár egy .git mappát
is lelehet magunkhoz klónozni.
A `git clone <elérési út>` parancsot használjuk ahhoz, hogy
valahonnan lehúzzunk egy git repo-t.
Ha például csak egy mappára utalunk, aminek a neve
`awesome_project.git`:
```
$ git clone --bare awesome_project awesome_project.git
Cloning into bare repository 'awesome_project.git'...
done.
```
Ezt akár kirakhatjuk egy fájlszerverre és onnan megoszthatnánk.
Következő szint, mikor weben keresztül szedjük le a nekünk
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.
```
$ git clone https://github.com/rlacko58/git-presentation.git
Cloning into 'git-presentation'...
remote: Enumerating objects: 173, done.
remote: Counting objects: 100% (173/173), done.
remote: Compressing objects: 100% (114/114), done.
remote: Total 173 (delta 65), reused 155 (delta 47), pack-reused 0
Receiving objects: 100% (173/173), 291.34 KiB | 1.22 MiB/s, done.
Resolving deltas: 100% (65/65), done.
```
Ez szimplán fogja és készít nekünk egy olyan repository-t, mint
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
Másik protokoll amit tudunk használni az az SSH.
Ez azért nagyon jó, mert ha ezen keresztül szedünk le,
akkor nem kell minden alkalommal a github, gitlab
felhasználónkba belépnünk egy repo-n való dolgozáskor.
Ahhoz, hogy ilyet tudjunk csinálni viszont SSH kulcsot kell
készítenünk.
Ennek annyi a trükkje, hogy rakunk a saját gépünkre egy
privát kulcsot és a távoli szerverre egy publikus kulcsot,
vagy bárhova ahova szeretnénk.
Ezután mikor az adott szerverre felakarunk menni, valamit
csinálni ott, akkor előtte a szerver leauthentikál minket
és egy kulcs csere után elkezdhetünk vele kommunikálni.
Az authentikáció lépése nagy vonalakban:
- Szerver publikus kulcsal letitkosít valamit és elküldi nekünk
- Ezt amit elküld csak a privát kulccsal lehet kibontani,
ezt mi elvégezzük
- A kibontott adatok közt lesz egy másik kulcs, mellyel
titkosítva elküldjük a szervernek ami kell az authentikációhoz
- A szerver kibontja, látja hogy minden oké és
megtörténik a kulcs csere
Ezután áttérnek egy másik módszerre amihez már mindkét oldalt
megvan a megfelelő kulcs és titkosítva küldik egymásnak
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
###### Linuxon / MacOS-en
1. Terminált megnyitjuk
2. Generálunk egy SSH kulcsot
`ssh-keygen -t rsa -b 4096`
3. Alapértelmezett helyre mentjük
4. Megadunk egy jelszót ha szeretnénk
_Ha valaki megszerzi a privát kulcsunk nem tudja használni
a jelszó beírása nélkül_
Adjuk hozzá az SSH agent-ünkhöz.
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
`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
1. Git Bash-t megnyitjuk
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)`
`> Agent pid 59566`
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`
Forrás: [docs.github.com](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent)
......@@ -112,7 +112,7 @@ $ git config --global core.editor "'C:/Program Files/Notepad++/notepad++.exe' -m
##### Jelenlegi konfig
Nézzük meg mik az összes beállításunk:
Nézzük meg az összes beállításunk:
```
$ git config --list
......@@ -131,6 +131,3 @@ Ha pedig csak egy adottat szeretnénk:
$ git config user.name
Rafael László
```
[Előző](intro/3_history?id=git-története) |
[Következő](workshop/2_basics?id=alapok)
......@@ -84,7 +84,7 @@ A branch-ről még később beszélek, de azt jegyezzük meg addig,
hogy ide kerülnek a mentéspontjaink egymás után sorban, mint
egy fa ága.
<div style="text-align:center"><img src="workshop/img/basic-branching.png" alt="Git branch" /></div>
<div style="text-align:center"><img src="guide/workshop/img/basic-branching.png" alt="Git branch" /></div>
```
$ git init .
......@@ -136,7 +136,7 @@ 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
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
az adott mentésből, de ez nem ajánlott használata a Git-nek.
az adott mentésből.
Oké, tehát például mappákba bemásolja a mentéseinket valamilyen
módon, de mégis hova?
......@@ -168,6 +168,11 @@ repo-k között.
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
commit-hoz a megfelelő fájlokat egy kis pointer mágia keretében.
<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.
#### Változtatások mentése
......@@ -199,7 +204,7 @@ repo-ban.
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?
......@@ -480,6 +485,3 @@ Máris csak a lényeget látjuk. Az is látható, hogy csak 7
karaktert kaptunk a hashből.
Elég csak pár karakter, hogy beazonosítsunk
például egy commitot a hash-ével.
[Előző](workshop/1_installation?id=telepítés-és-konfiguráció) |
[Következő](workshop/3_branch)
# Branch-ek, elágazás
#### Mik azok a branch-ek?
Talán legegyszerűbb, ha előbb készítünk egyet.
Az előző témakörben átneveztünk egy fájlt, de
nem commitoltuk el.
Ezt ne tegyük meg, hanem készítsünk egy ágat onnan,
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.
```
$ git status
On branch master
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: gyumolcskosar -> gyumolcskosar.txt
```
Látható, hogy a `master` nevű ágon vagyunk.
Ezt képzeljük el úgy, mint egy fa törzse, melyből
le ágazunk.
Nézzük meg jelenleg milyen branch-ek vannak a repo-nkban
a `git branch` paranccsal.
```
$ git branch
* master
```
Látható, hogy még csak egy van.
Ha a `git branch <új branch neve>` parancsot kiadjuk, akkor
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.
```
$ git branch
atnevezes
* master
```
Itt a `*` azt jelöli, hogy melyiken vagyunk jelenleg.
Ha kiadnánk a `git status` parancsot, akkor is láthatnánk
melyik ágon vagyunk.
Gyerünk át az új ágra.
Ehhez a `git checkout <ág neve>` parancsot tudjuk használni.
```
$ git checkout atnevezes
D gyumolcskosar
A gyumolcskosar.txt
Switched to branch 'atnevezes'
```
Itt azt is látjuk azonnal, hogy a módosításainkkal nem történt
semmi.
Ezek jelenleg még `staged`-be vannak és ha elmentjük őket
a commital, akkor az épp jelenlegi ágra fogja
beilleszteni őket.
Nézzük meg `git status`-al, hogy mi a helyzet.
```
$ git status
On branch atnevezes
Changes to be committed:
(use "git restore --staged <file>..." to unstage)
renamed: gyumolcskosar -> gyumolcskosar.txt
```
Látszik is, hogy az `atnevezes` ágon vagyunk.
Mentsük el ide a módosításaink
`Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz`
üzenettel
```
$ 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
1 file changed, 0 insertions(+), 0 deletions(-)
rename gyumolcskosar => gyumolcskosar.txt (100%)
```
Ezt követően ha kiadjuk a `git log --graph --oneline` parancsot, akkor
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
* 80560db (master) jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót
* b677a86 Raktam bele egy körtét
* c45abc3 Készítettem egy gyümölcskosarat
```
#### Hogy épül fel?
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
hasonló módon:
<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.
Ahogy láthattuk az előző fejezetben, a mentéspontok pedig
mutatnak a megfelelő fájlokra amiket épp módosítottunk.
Vizsgáljuk meg a jelenlegi repo-nkat, hogy pontosan
mi merre is van.
<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
az ábrán.
Továbbá azt is látjuk, hogy van még 3 pointerünk.
Az egyik `master`, ez az ami a legfrissebb mentésre
mutat a master ágon.
Ugyanez igaz az `atnevezes` ág esetében, de oda még mutat
egy `HEAD` mutató is.
Ez az a mutató ami azt jelzi, hogy hol vagyunk mi jelenleg.
Mikor egy új mentést hozunk létre, akkor az a mentés ide
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
Még mielőtt vissza mennénk a master-re, nézzük meg milyen
fájljaink vannak az `ls -al` -el.
```
$ ls -al
total 20
drwxrwxr-x 3 rlacko rlacko 4096 okt 8 21:07 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 ..
drwxrwxr-x 8 rlacko rlacko 4096 okt 9 15:01 .git
-rw-rw-r-- 1 rlacko rlacko 15 okt 8 20:43 .gitignore
-rw-rw-r-- 1 rlacko rlacko 11 okt 8 17:29 gyumolcskosar.txt
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:09 hordo
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:42 jegyzeteim.txt
```
Egy pár extra adatot is kapunk, de nekünk most a
`gyumolcskosar.txt` a lényeges.
Most gyerünk vissza a `master` ágra a `git checkout <ág neve>`
paranccsal.
```
$ git checkout master
Switched to branch 'master'
```
Most adjuk ismét ki az `ls -al` parancsot.
```
$ ls -al
total 20
drwxrwxr-x 3 rlacko rlacko 4096 okt 9 15:24 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 ..
drwxrwxr-x 8 rlacko rlacko 4096 okt 9 15:24 .git
-rw-rw-r-- 1 rlacko rlacko 15 okt 8 20:43 .gitignore
-rw-rw-r-- 1 rlacko rlacko 11 okt 9 15:24 gyumolcskosar
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:09 hordo
-rw-rw-r-- 1 rlacko rlacko 0 okt 8 20:42 jegyzeteim.txt
```
Látható, hogy vissza léptünk arra az állapotra mikor még
nem változtattunk rajta.
Ez elképesztően jó, ugyanis két teljesen külön álló munkát
így elkülönítöttünk egymástól!
Írjuk a `gyumolcskosar` fájl végére, hogy `szolo` és mentsük el
azzal az üzenettel, hogy `Tettem a kosaramba szőlőt`.
```
$ git commit -m "Tettem a kosaramba szőlőt"
[master 932cbeb] Tettem a kosaramba szőlőt
1 file changed, 1 insertion(+)
```
Most újra kiadva a `git log --graph --oneline` parancsot,
már érdekesebb eredményt láthatunk.
```
$ git log --graph --oneline
* 15719cf (HEAD -> master) Tettem a kosaramba szőlőt
* 80560db jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót
...
```
Mégis hova tünt a másik águnk?
A git nem fogja alapból jelezni nekünk azt amit nem lát
a jelenlegi mentéstől vissza menve.
Hogy lássuk a másik ágat is, tegyük hozzá a `--all` kapcsolót.
```
$ git log --graph --oneline --all
* 15719cf (HEAD -> master) Tettem a kosaramba szőlőt
| * 7de1c94 (atnevezes) Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
|/
* 80560db jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót
...
```
Na így már látjuk a másik ágat is.
Még vizuálisabban jelenleg így állunk:
<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.
```
$ git checkout atnevezes
```
Majd pedig nevezzük át a `hordo`-t `hordo.txt`-re.
```
$ mv hordo hordo.txt
```
És ezt is mentsük el
```
$ git add .
$ git commit -m "Adtam kiterjesztést a hordónak"
```
Egy ismételt `git log`-al láthatjuk is a fánkat.
```
$ git log --graph --oneline --all
* 9dcfc79 (HEAD -> atnevezes) Adtam kiterjesztést a hordónak
* 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
| * 15719cf (master) Tettem a kosaramba szőlőt
|/
* 80560db jegyzeteim ignorálása
```
#### Mergelés
Az egyik legfontosabb dolog az ágak létrehozása után, hogy
betudjuk olvasztani az águnk valahova.
Az lenne a feladat, hogy a `master`-re beillesszük az
`atnevezes` ágon végzett módosításaink.
Ehhez a `git merge <branch neve>` parancsot használhatjuk.
A lényege, hogy ez a parancs azt az ágat amit kiválasztottunk
megpróbálja beolvasztani oda ahol épp a `HEAD` mutatónk van.
Gyerünk is át a `master` ágra.
```
$ git checkout master
Switched to branch 'master'
```
Ezután pedig mergeljük át a `master`-re az `atnevezes` ágat.
```
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ítanünk, teljesen
jó úgy.
A merge lefut és láthatjuk mi is történt:
```
$ git merge atnevezes
Removing hordo
Merge made by the 'recursive' strategy.
gyumolcskosar => gyumolcskosar.txt | 0
hordo => hordo.txt | 0
2 files changed, 0 insertions(+), 0 deletions(-)
rename gyumolcskosar => gyumolcskosar.txt (100%)
rename hordo => hordo.txt (100%)
```
Most egy újabb `git log`-al ezt láthatjuk:
```
* 366140d (HEAD -> master) Merge branch 'atnevezes'
|\
| * 9dcfc79 (atnevezes) Adtam kiterjesztést a hordónak
| * 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
* | 15719cf Tettem a kosaramba szőlőt
|/
* 80560db jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót
```
Ez a bizonyos `merge commit` egyszerre mutat a két ág
tartalmára.
#### Merge conlict
Mi van akkor ha ketten egyszerre ugyanazt változtatjuk?
Úgy döntöttünk, hogy pálinkát szeretnénk főzni józsival,
szóval a hordóba teszünk ízlés szerint valami
gyümölcsöt.
Gyerünk át a saját águnkra, de egy paranccsal.
Ezt a `-b` kapcsolóval tudjuk
elérni a `git checkout` mellett.
```
$ git checkout -b lacko
```
Most egy újabb `git branch` kiadásával már látható, hogy
3 ággal rendelkezünk.
```
atnevezes
* lacko
master
```
Tegyünk bele a `hordo.txt`-be egy nekünk tetsző gyümölcsöt.
```gyumolcs.txt
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.
```
$ 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
körtét szeretne rakni. Menjünk át a master ágra és
tegyük meg ott.
Azt mondta a szomszéd, hogy szilvát szeretne beletenni, szóval:
```hordo.txt
szilva
```
Ezt is mentsük el.
```
$ 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:
```
$ git log --graph --oneline --all
* 41f1c05 (HEAD -> master) Raktam szilvát a hordóba
| * 6d6d1ac (lacko) Raktam a hordóba körtét
|/
* 366140d Merge branch 'atnevezes'
|\
| * 9dcfc79 (atnevezes) Adtam kiterjesztést a hordónak
| * 7de1c94 Hozzáadtam a txt kiterjesztést a gyümölcskosar fájlhoz
* | 15719cf Tettem a kosaramba szőlőt
|/
* 80560db jegyzeteim ignorálása
* 30bf35d Hoztunk egy hordót
...
```
Na és akkor most mergeljünk be a master-re a módosításaink.
```
$ git merge lacko
Auto-merging hordo.txt
CONFLICT (content): Merge conflict in hordo.txt
Automatic merge failed; fix conflicts and then commit the result.
```
Oh! Merge conlict 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, mit a státusz.
```
$ git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: hordo.txt
no changes added to commit (use "git add" and/or "git commit -a")
```
Az van, hogy ilyenkor a git beírja a fájlunkba mind a két branch változásait
és utána azt várja tőlünk, hogy átalakítsuk a fájlt, majd pedig azt elmentsük.
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
<<<<<<< HEAD
szilva
=======
korte
>>>>>> lacko
```
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.
Itt már csak átírjuk a fájlt ahogy szeretnénk, hogy kinézzen.
```hordo.txt
korte
```
Nézzük meg mi a státusz ezután:
```
git status
On branch master
You have unmerged paths.
(fix conflicts and run "git commit")
(use "git merge --abort" to abort the merge)
Unmerged paths:
(use "git add <file>..." to mark resolution)
both modified: hordo.txt
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.
```
git commit -a -m "lacko branch mergelve és konflikt megoldva"
```
Nézzük meg hogy néz ki a gráfunk ezután.
```
* 7341274 (HEAD -> master) lacko branch mergelve és konflikt megoldva
|\
| * 6d6d1ac (lacko) Raktam a hordóba körtét
* | 41f1c05 Raktam szilvát a hordóba
|/
* 366140d Merge branch 'atnevezes'
...
```
Tehát most a merge commitunk egyben a konfliktusok megoldását is tartalmazza.
Nem elképesztő? Innentől már csak együtt kell dolgozni, margeknél a konfliktusokat
megoldani.
Semmi extra effortot nem fog igényelni egy hasonló elvégzése.
guide/workshop/img/commit-and-tree.png

22.3 KiB

guide/workshop/img/commits-and-parents.png

19.3 KiB

guide/workshop/img/tree_awesome.png

43.9 KiB

guide/workshop/img/tree_with_one_branch.png

33.8 KiB

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta name="theme-color" content="#2f3136" />
<meta name="msapplication-navbutton-color" content="#2f3136" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="#2f3136" />
<meta
name="viewport"
content="width=device-width, initial-scale=1, shrink-to-fit=no"
/>
<meta
http-equiv="Cache-Control"
content="no-cache, no-store, must-revalidate"
/>
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="0" />
<title>My Docs</title>
<link rel="icon" type="image/x-icon" href="favicon.ico" />
<link rel="stylesheet" href="https://unpkg.com/docute@4/dist/docute.css" />
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id="docute"></div>
<script src="https://unpkg.com/docute@4/dist/docute.js"></script>
<script>
new Docute({
target: '#docute',
title: 'Git',
layout: 'wide',
darkThemeToggler: true,
detectSystemDarkTheme: true,
highlight: ['bash'],
nav: [
{
title: 'Főoldal',
link: '/',
},
{
title: 'GitSCH',
link: 'https://git.sch.bme.hu/rlacko/git-presentation',
},
],
sidebar: [
{
title: 'Bevezető', // Hack
children: [
{
title: 'Intro',
link: '/guide/intro/1_intro',
},
{
title: 'Verziókezelés',
link: '/guide/intro/2_versioning',
},
{
title: 'Git története',
link: '/guide/intro/3_history',
},
],
},
{
title: 'Git használata',
children: [
{
title: 'Telepítés és konfiguráció',
link: '/guide/workshop/1_installation',
},
{
title: 'Alapok',
link: '/guide/workshop/2_basics',
},
{
title: 'Branch-ek, elágazás',
link: '/guide/workshop/3_branch',
},
],
},
{
title: 'Távoli Repository',
children: [
{
title: 'Alapok és SSH kulcs',
link: '/guide/remote/1_basics',
},
],
},
],
fetchOptions: { cache: 'no-cache' },
});
</script>
</body>
</html>
{
"name": "python-presentation",
"version": "1.0.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
"anymatch": {
"version": "3.1.1",
"resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
"integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
"requires": {
"normalize-path": "^3.0.0",
"picomatch": "^2.0.4"
}
},
"binary-extensions": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
"integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA=="
},
"braces": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
"integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
"requires": {
"fill-range": "^7.0.1"
}
},
"chokidar": {
"version": "3.5.1",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
"integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
"requires": {
"anymatch": "~3.1.1",
"braces": "~3.0.2",
"fsevents": "~2.3.1",
"glob-parent": "~5.1.0",
"is-binary-path": "~2.1.0",
"is-glob": "~4.0.1",
"normalize-path": "~3.0.0",
"readdirp": "~3.5.0"
}
},
"dateformat": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/dateformat/-/dateformat-2.2.0.tgz",
"integrity": "sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI="
},
"debug-log": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/debug-log/-/debug-log-1.0.1.tgz",
"integrity": "sha1-IwdjLUwEOCuN+KMvcLiVBG1SdF8="
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
"integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ="
},
"extend": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
"integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
"integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
"requires": {
"to-regex-range": "^5.0.1"
}
},
"fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"optional": true
},
"furmat": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/furmat/-/furmat-1.0.0.tgz",
"integrity": "sha1-2f5ko+tjvhVut7cbh7hjbagpBMg=",
"requires": {
"chalk": "^1.1.3"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"glob-parent": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz",
"integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==",
"requires": {
"is-glob": "^4.0.1"
}
},
"has-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"requires": {
"ansi-regex": "^2.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
}
}
},
"is-binary-path": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
"integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
"requires": {
"binary-extensions": "^2.0.0"
}
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
"integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI="
},
"is-glob": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
"integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
"requires": {
"is-extglob": "^2.1.1"
}
},
"is-number": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
"integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng=="
},
"normalize-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
"integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA=="
},
"oh-my-log": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/oh-my-log/-/oh-my-log-5.0.1.tgz",
"integrity": "sha1-AMEFPCIFCjBDJ011TxS0Crr7sPY=",
"requires": {
"chalk": "^1.1.3",
"dateformat": "^2.0.0",
"debug-log": "^1.0.1",
"extend": "^3.0.0",
"furmat": "^1.0.0"
},
"dependencies": {
"ansi-regex": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
"integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
},
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4="
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"requires": {
"ansi-styles": "^2.2.1",
"escape-string-regexp": "^1.0.2",
"has-ansi": "^2.0.0",
"strip-ansi": "^3.0.0",
"supports-color": "^2.0.0"
}
},
"strip-ansi": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"requires": {
"ansi-regex": "^2.0.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
}
}
},
"picomatch": {
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
"integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg=="
},
"readdirp": {
"version": "3.5.0",
"resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
"integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
"requires": {
"picomatch": "^2.2.1"
}
},
"serve-reload-replace": {
"version": "1.1.7",
"resolved": "https://registry.npmjs.org/serve-reload-replace/-/serve-reload-replace-1.1.7.tgz",
"integrity": "sha512-2l1y7zkbEWRXgEps9xCRuORdwshvlh9UD76P16qgD3LkgLq2gXfqKHJeQS4PnLXDJZA64uxGD4NMZPeYlFcF9A==",
"requires": {
"chalk": "^4.1.0",
"chokidar": "^3.4.3",
"oh-my-log": "^5.0.1"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"to-regex-range": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
"integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
"requires": {
"is-number": "^7.0.0"
}
}
}
}
{
"name": "python-presentation",
"version": "1.0.0",
"description": "2021-es Python dokumentáció KSZK előadáshoz",
"scripts": {
"start": "srr"
},
"author": "",
"license": "GPL",
"dependencies": {
"serve-reload-replace": "^1.1.7"
}
}
.pre-wrapper {
margin-bottom: 20px !important;
margin-top: 20px !important;
}
.markdown-header {
margin-top: 80px !important;
}
ul {
margin-top: 0 !important;
}