Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
Git Presentation
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Réthelyi Bálint
Git Presentation
Commits
07bf794a
Commit
07bf794a
authored
4 years ago
by
Rafael László
Browse files
Options
Downloads
Patches
Plain Diff
better workshop basics
parent
518a882d
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
docs/workshop/2_basics.md
+72
-46
72 additions, 46 deletions
docs/workshop/2_basics.md
with
72 additions
and
46 deletions
docs/workshop/2_basics.md
+
72
−
46
View file @
07bf794a
...
@@ -19,7 +19,7 @@ $ git help config
...
@@ -19,7 +19,7 @@ $ git help config
De ha csak egy gyors áttekintésre van szükséged:
De ha csak egy gyors áttekintésre van szükséged:
```
```
\
$ git config -h
$ git config -h
usage: git config [<options>]
usage: git config [<options>]
Config file location
Config file location
...
@@ -40,10 +40,10 @@ Action
...
@@ -40,10 +40,10 @@ Action
A Git repository egy olyan mappa, mely Git verziókezelés alatt
A Git repository egy olyan mappa, mely Git verziókezelés alatt
áll.
áll.
Például
az a mappa, ahol van egy .git mappa, az egy git repo.
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 rlacko rlacko 4096 okt 8 12:59 .
drwxrwxr-x 3 rlacko rlacko 4096 okt 7 12:04 ..
drwxrwxr-x 3 rlacko rlacko 4096 okt 7 12:04 ..
...
@@ -63,19 +63,20 @@ $ cd projektem
...
@@ -63,19 +63,20 @@ $ cd projektem
```
```
Nézzük meg, hogy mi a helyzet a git-el
ezzel a mappában
.
Nézzük meg, hogy mi a helyzet a git-el.
Ehhez a
`git status`
parancsot tudjuk használni.
Ehhez a
`git status`
parancsot tudjuk használni.
Ez a parancs a jelenlegi git repo-nkról képes
Ez a parancs a jelenlegi git repo-nkról képes
információkat kiírni.
információkat kiírni.
```
```
\
$ git status
$ git status
fatal: not a git repository (or any of the parent directories): .git
fatal: not a git repository (or any of the parent directories): .git
```
```
Teljesen üres a mappa, még nincs verzió kontroll alatt.
Teljesen üres a mappa, még nincs verzió kontroll alatt.
`ls -al`
-el tudjuk is ellenőrizni.
`ls -al`
-el tudjuk is ellenőrizni, hogy nincsen
`.git`
mappa.
Tegyük verziókontroll alá a
`git init`
paranccsal.
Tegyük verziókontroll alá a
`git init`
paranccsal.
Ez beállítja nekünk a
`master`
branchet és más alap dolgokat.
Ez beállítja nekünk a
`master`
branchet és más alap dolgokat.
...
@@ -86,7 +87,7 @@ egy fa ága.
...
@@ -86,7 +87,7 @@ 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=
"workshop/img/basic-branching.png"
alt=
"Git branch"
/></div>
```
```
\
$ git init .
$ git init .
Initialized empty Git repository in .../projektem/.git/
Initialized empty Git repository in .../projektem/.git/
```
```
...
@@ -94,7 +95,7 @@ Initialized empty Git repository in .../projektem/.git/
...
@@ -94,7 +95,7 @@ Initialized empty Git repository in .../projektem/.git/
Ha megnézzük, mostmár van egy .git mappánk
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 .
drwxrwxr-x 3 rlacko rlacko 4096 okt 8 16:52 .
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 ..
drwxrwxr-x 12 rlacko rlacko 4096 okt 8 16:49 ..
...
@@ -131,10 +132,11 @@ Erre egyik megoldás más verziókezelőknél, hogy optimalizálnak
...
@@ -131,10 +132,11 @@ Erre egyik megoldás más verziókezelőknél, hogy optimalizálnak
A Git ezt úgy oldja meg, hogy egy mentés az összes fájlt
A Git ezt úgy oldja meg, hogy egy mentés az összes fájlt
egy az egybe lemásolja.
egy az egybe lemásolja.
Például egyik mentés alkalmával feltöltök egy 1gb-os videót,
Például egyik mentés alkalmával feltöltök egy 1gb-os videót,
majd a következő mentéskor törlöm, akkor az a videó
majd a következő mentéskor pár bitet átírok, akkor már
benne marad a git repo-ban.
2gb-nyi videó lesz a repóban és ha utána egy másik mentésel
Persze utólag tudunk olyat, hogy kitöröljük az adott mentésből,
ki is töröljük, az attól még megmarad.
de ez nem ajánlott használata a Git-nek.
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.
Oké, tehát például mappákba bemásolja a mentéseinket valamilyen
Oké, tehát például mappákba bemásolja a mentéseinket valamilyen
módon, de mégis hova?
módon, de mégis hova?
...
@@ -154,12 +156,11 @@ $ tree .git/objects/
...
@@ -154,12 +156,11 @@ $ tree .git/objects/
```
```
Mégis mik ezek?
Mégis mik ezek?
A Git tömörítve és
titkosítottan
hashelve tárolja a fájlokat.
A Git tömörítve és hashelve tárolja a fájlokat.
A hashelésnek annyi a lényege, hogy a fájl teljes tartalmán
A hashelésnek annyi a lényege, hogy a fájl teljes tartalmán
átfuttatunk egy algoritmust, mely ezután kiköp egy 0-9a-z
átfuttatunk egy algoritmust, mely ezután kiköp egy 0-9a-z
szöveget és ha akár 1 bit-et is változtatunk egy fájlon, akkor
szöveget és ha akár 1 bit-et is változtatunk egy fájlon, akkor
más lesz a hash-e, sőt a titkosítás miatt még feltörni is
más lesz a hash-e.
lehetetlen.
Tehát ha valaki elcommitol valamit, akkor azt már más nem tudja
Tehát ha valaki elcommitol valamit, akkor azt már más nem tudja
megváltoztatni anélkül, hogy változna a hash.
megváltoztatni anélkül, hogy változna a hash.
Így tudjuk biztosítani a teljes konzisztenciát az elosztott
Így tudjuk biztosítani a teljes konzisztenciát az elosztott
...
@@ -168,12 +169,23 @@ repo-k között.
...
@@ -168,12 +169,23 @@ repo-k között.
Hash-t láthatunk például a mentéspontjainkon, fájljainkon, stb.
Hash-t láthatunk például a mentéspontjainkon, fájljainkon, stb.
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.
A lényeg, hogy mindenhol ott vannak a hash-ek, és erre mindjárt
látunk példát.
#### Változtatások mentése
#### Változtatások mentése
Na de hogyan készítünk ilyen mentéseket?
Hogyan néz ki egy mentés?
```
commit c45abc3d64c7840b4088b77d5a60d02198a78854
Author: Rafael László <rlacko99 [AT] gmail.com>
Date: Thu Oct 8 17:19:28 2020 +0200
Készítettem egy gyümölcskosarat
```
Van egy commit-nak
`commit hash`
-e,
`készítője`
,
`létrehozási dátumja`
, és
`commit üzenete`
Na de hogyan készítünk egy mentéspontot?
A fájljainknak különböző állapotai létezhetnek egy
A fájljainknak különböző állapotai létezhetnek egy
repo-ban.
repo-ban.
...
@@ -187,23 +199,22 @@ repo-ban.
...
@@ -187,23 +199,22 @@ 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=
"
Local Version Control Systems
"
/></div>
<div
style=
"text-align:center"
><img
src=
"workshop/img/git_lifecycle.png"
alt=
"
Git Life cycle
"
/></div>
Mi a jelenlegi helyzet a
repo-ban, miutá
n inicializált
uk
?
Mi a jelenlegi helyzet a
frisse
n inicializált
repo-ban
?
```
```
\
$ git status
$ git status
On branch master
On branch master
No commits yet
No commits yet
nothing to commit (create/copy files and use "git add" to track)
nothing to commit (create/copy files and use "git add" to track)
```
```
Láthatjuk, hogy még nincsenek mentéspontjaink
és
nincs mit
Láthatjuk, hogy még nincsenek mentéspontjaink
,
nincs mit
elmentenünk és egyben a git próbál segíteni, hogy hogyan
elmentenünk és egyben a git próbál segíteni, hogy hogyan
tudunk stagelni valamit.
tudunk stagelni valamit.
Ezt több helyen is megfigyelhetjük a git-ben.
Ezt több helyen is megfigyelhetjük a git-ben.
Próbál segíteni ahol csak tud, minél kényelmesebbé téve
Próbál segíteni ahol csak tud.
a munkánkat.
Vegyünk fel egy új fájlt.
Vegyünk fel egy új fájlt.
...
@@ -214,13 +225,13 @@ echo 'alma' > gyumolcskosar
...
@@ -214,13 +225,13 @@ echo 'alma' > gyumolcskosar
_Itt az
`echo`
egy olyan parancs volt, mely kiírta nekünk a
_Itt az
`echo`
egy olyan parancs volt, mely kiírta nekünk a
terminálra azt, hogy "alma", de átirányítottuk egy fájlba
terminálra azt, hogy "alma", de átirányítottuk egy fájlba
a
`>`
operátorral és mivel nem létezett a fájl, azt létre is
a
`>`
operátorral és mivel nem létezett a fájl, azt létre is
hozta._
hozta._
- Linux magic #01
Újra megvizsgálva a status-t, látni fogjuk, hogy megjelent, de
Újra megvizsgálva a status-t, látni fogjuk, hogy megjelent, de
még nincs verziókontroll alatt.
még nincs verziókontroll alatt.
```
```
\
$ git status
$ git status
...
...
Untracked files:
Untracked files:
(use "git add <file>..." to include in what will be committed)
(use "git add <file>..." to include in what will be committed)
...
@@ -233,23 +244,23 @@ Ahhoz, hogy git alá helyezzük, a `git add <fájl>` parancsot
...
@@ -233,23 +244,23 @@ 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"_
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
```
```
Ezután megjelenik, mint új fájl a git adatbázisában.
Ezután megjelenik, mint új fájl a git adatbázisában.
```
```
\
$ git status
$ git status
...
...
Changes to be committed:
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
(use "git rm --cached <file>..." to unstage)
new file: gyumolcskosar
new file: gyumolcskosar
```
```
A fájlunk átkerült staged módba és ezt akár
mostmár
el is
A fájlunk átkerült staged módba és ezt akár el is
tudjuk menteni.
tudjuk menteni.
A mentéshez a
`git commit`
parancsot tudjuk
A mentéshez a
`git commit`
parancsot tudjuk
használni.
használni.
...
@@ -276,7 +287,7 @@ A # -el kezdődő sorok kommentek, ezek nem fognak a commit
...
@@ -276,7 +287,7 @@ A # -el kezdődő sorok kommentek, ezek nem fognak a commit
majd mentsük el a fájlt és zárjuk be a szövegszerkesztőt.
majd mentsük el a fájlt és zárjuk be a szövegszerkesztőt.
```
```
\
$ git commit
$ git commit
[master (root-commit) c45abc3] Készítettem egy gyümölcskosarat
[master (root-commit) c45abc3] Készítettem egy gyümölcskosarat
1 file changed, 1 insertion(+)
1 file changed, 1 insertion(+)
create mode 100644 gyumolcskosar
create mode 100644 gyumolcskosar
...
@@ -291,7 +302,7 @@ Továbbá megjelent pár további hasznos információ is.
...
@@ -291,7 +302,7 @@ Továbbá megjelent pár további hasznos információ is.
Ismételten nézzük meg mi a helyzet a reponkban:
Ismételten nézzük meg mi a helyzet a reponkban:
```
```
\
$ git status
$ git status
On branch master
On branch master
nothing to commit, working tree clean
nothing to commit, working tree clean
```
```
...
@@ -327,7 +338,7 @@ parancsnak áttudunk adni úgynevezett kapcsolókat.
...
@@ -327,7 +338,7 @@ parancsnak áttudunk 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,
hanem átrak
t
uk a parancsot olyan módba,
hanem átrak
j
uk a parancsot olyan módba,
hogy várjon egy szöveget, mint mentéshez kapcsolódó üzenet.
hogy várjon egy szöveget, mint mentéshez kapcsolódó üzenet.
Általában logikusak az egy betűs rövidítések:
Általában logikusak az egy betűs rövidítések:
`-m: message, -a: all`
, de tudunk hosszabb verziókat is
`-m: message, -a: all`
, de tudunk hosszabb verziókat is
...
@@ -356,19 +367,29 @@ mit ír ki a `git status -s`.
...
@@ -356,19 +367,29 @@ mit ír ki a `git status -s`.
Mi van akkor, ha valami fájlt nem szeretnénk verziókontroll
Mi van akkor, ha valami fájlt nem szeretnénk verziókontroll
alá tenni? Gondolok például a build-ek mappáira vagy
alá tenni? Gondolok például a build-ek mappáira vagy
adott Eszköz
által generált fájlokra
?
egy IDE
által generált fájlokra
.
Hozzunk létre egy
`.gitignore`
fájlt és egy
`jegyzeteim.txt`
Hozzunk létre egy
`.gitignore`
fájlt és egy
`jegyzeteim.txt`
fájlt.
fájlt.
Ezután adjuk ki a
`git status`
parancsot.
Ezután adjuk ki a
`git status`
parancsot.
Láthatjuk, hogy a
`jegyzeteim`
fájl nem jelent meg, tehát
Láthatjuk, hogy a
`jegyzeteim`
fájl megjelent.
ignoráljuk a fájlt. Stage-ljük, majd mentsük el a fájlt a
Most írjuk be a fájl nevét a
`.gitignore`
-ba.
```
.gitignore
jegyzeteim.txt
```
Ezt követően adjuk ki újra a
`git status`
parancsot.
Oh, eltünt a fájlunk! Pont ezt akartuk, mostmár nem fogja
figyelni a git ha ilyen fájlt készítünk.
Mostmár csak stageljük és mentsük el az új fájlunk.
`git add .`
,
`git commit -m "jegyzeteim ignorálása"`
`git add .`
,
`git commit -m "jegyzeteim ignorálása"`
#### Fájlok mozgatása
#### Fájlok mozgatása
A git semmi adatot nem tárol változásokról, csak
A git semmi adatot nem tárol változásokról, csak
mentéseket készít, ahogy említettem
az előző részben
.
mentéseket készít, ahogy említettem.
Próbáljuk ki, hogy mi történik ha átnevezünk egy fájlt?
Próbáljuk ki, hogy mi történik ha átnevezünk egy fájlt?
```
```
...
@@ -392,7 +413,7 @@ no changes added to commit (use "git add" and/or "git commit -a")
...
@@ -392,7 +413,7 @@ no changes added to commit (use "git add" and/or "git commit -a")
Látható, hogy az eredeti fájlt "töröltük" és egy új
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?
a változtatásokat
`git add .`
-al
?
```
```
$ git add .
$ git add .
...
@@ -406,7 +427,9 @@ Changes to be committed:
...
@@ -406,7 +427,9 @@ Changes to be committed:
Most meg már látszik, hogy csak átnevezés történt?
Most meg már látszik, hogy csak átnevezés történt?
A Git képes rá, hogy felismerje a fájlokat és eldöntse, hogy
A Git képes rá, hogy felismerje a fájlokat és eldöntse, hogy
ugyanaz volt a kettő, tehát átnevezés történt.
ugyanaz volt a kettő, tehát átnevezés, mozgatás, stb. történt.
De nem tudja követni a fájlt, csak látja, hogy jött egy új
fájl ami szinte ugyanaz, mint ami törölve lett nemrég.
#### Mentési előzmények
#### Mentési előzmények
...
@@ -441,18 +464,21 @@ Date: Thu Oct 8 17:19:28 2020 +0200
...
@@ -441,18 +464,21 @@ Date: Thu Oct 8 17:19:28 2020 +0200
Itt azt láthatjuk, hogy milyen mentéspontjaink vannak
Itt azt láthatjuk, hogy milyen mentéspontjaink vannak
és a hozzájuk tartozó dolgokat, mint a commit hash vagy
és a hozzájuk tartozó dolgokat, mint a commit hash vagy
a
hozzá tartozó
üzenet.
a üzenet.
Picit tegyük szebbé. Adjuk ki az előző parancsot a
Picit tegyük szebbé. Adjuk ki az előző parancsot a
`
--graph
--oneline`
kapcsoló
kk
al.
`--oneline`
kapcsoló
v
al.
```
```
*
80560db (HEAD -> master) jegyzeteim ignorálása
80560db (HEAD -> master) jegyzeteim ignorálása
*
30bf35d Hoztunk egy hordót
30bf35d Hoztunk egy hordót
*
b677a86 Raktam bele egy körtét
b677a86 Raktam bele egy körtét
*
c45abc3 Készítettem egy gyümölcskosarat
c45abc3 Készítettem egy gyümölcskosarat
```
```
Máris szebben néz ki :)
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
)
|
[
Következő
](
workshop/3_branch
)
[
Előző
](
workshop/1_installation
)
|
[
Következő
](
workshop/3_branch
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment