Popravi uvodno poglavje
This commit is contained in:
parent
6546899abb
commit
b2e58d6570
2 changed files with 3241 additions and 2130 deletions
5298
git-intro.pdf
5298
git-intro.pdf
File diff suppressed because it is too large
Load diff
|
|
@ -1,4 +1,6 @@
|
||||||
#set page("a4", margin: 20mm)
|
#set page("a4", margin: 20mm)
|
||||||
|
#set heading(numbering: "1.")
|
||||||
|
#show heading: block.with(below: 1.5em)
|
||||||
#set text(lang: "sl")
|
#set text(lang: "sl")
|
||||||
#show link: set text(blue)
|
#show link: set text(blue)
|
||||||
#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node
|
#import "@preview/fletcher:0.5.8" as fletcher: diagram, edge, node
|
||||||
|
|
@ -9,36 +11,49 @@
|
||||||
#include "git-figure.typ"
|
#include "git-figure.typ"
|
||||||
|
|
||||||
#align(center)[
|
#align(center)[
|
||||||
= Git za matematike
|
#set text(size:2em)
|
||||||
|
*Git za matematike*
|
||||||
]
|
]
|
||||||
#v(2em)
|
#v(2em)
|
||||||
|
|
||||||
Naučili se bomo, *kako Git deluje*. Spoznali bomo, da so v ozadju Gita
|
Naučili se bomo, *kako Git deluje*. Spoznali bomo, da so v ozadju Gita
|
||||||
*vsebinsko naslovljiva shramba podatkov*, *Merklejeva drevesa* in *usmerjen aciklični graf*.
|
*vsebinsko naslovljiva shramba podatkov*, *Merklejeva drevesa* in *usmerjeni aciklični grafi*.
|
||||||
|
|
||||||
*Cilj:* Razumeti _logiko_ Gita. Ko razumemo, kaj je v ozadju, lahko operacije, kot so `merge`,
|
*Cilj:* Razumeti _logiko_ Gita. Ko razumemo, kaj je v ozadju, lahko operacije, kot so `merge`,
|
||||||
`rebase` in `reset` preporsto razložimo s preoblikovanjem grafa in premikanjem kazalcev po grafu.
|
`rebase` in `reset` preporsto razložimo s preoblikovanjem grafa in premikanjem kazalcev po grafu.
|
||||||
|
|
||||||
*Čas branja:* 30 min
|
*Čas branja:* 30 min
|
||||||
|
|
||||||
== Kaj je Git?
|
= Kaj je Git?
|
||||||
|
|
||||||
#link("https://git-scm.com/")[Git] je kot *časovni stroj* za datoteke. Uporabniku omogoča, da vidi *pretekle različice* datotek,
|
#link("https://git-scm.com/")[Git] je kot *časovni stroj* za datoteke. Uporabniku omogoča, da vidi *pretekle različice* datotek,
|
||||||
sprememinja datoteke, *brez skrbi, da bi kaj pokvaril* in datoteke *deli z drugimi*.
|
sprememinja datoteke, *brez skrbi, da bi kaj pokvaril* in datoteke *deli z drugimi*. Poleg časovnega stroja je
|
||||||
Git namreč hrani vsebino direktorija z datotekami in celotno zgodovino različic datotek iz preteklosti.
|
Git *razpršeno skladišče datotek*. Omogoča, da datoteke *hkrati ureja več uporabnikov* na različnih računalnikih in
|
||||||
Za vsako različico hrani Git zapis o avtorju, datumu in opis sprememb, ki so nastale v primerjavi s predhodno
|
kasneje spremembe *združi*.
|
||||||
različico.
|
|
||||||
|
|
||||||
|
Git hrani vsebino direktorija z datotekami in celotno zgodovino različic datotek iz preteklosti.
|
||||||
|
Za vsako različico hrani Git zapis o avtorju, datumu in opis sprememb, ki so nastale v primerjavi s predhodno
|
||||||
|
različico. Vse te imformacije dajejo podroben pregled nad zgodovino sprememb.
|
||||||
#note[
|
#note[
|
||||||
Sisteme, ki omogočajo hranjenje preteklih različic datotek, imenujemo
|
Sisteme, ki omogočajo hranjenje preteklih različic datotek, imenujemo
|
||||||
#link("https://en.wikipedia.org/wiki/Version_control")[sistemi za nadzor različic] (angl. version control system (VCS)) ali
|
#link("https://en.wikipedia.org/wiki/Version_control")[sistemi za nadzor različic] (angl. version control system (VCS)) ali
|
||||||
_sistemi za upravljanje z izvorno kodo_ (angl. Source Code Management (SCM)).
|
_sistemi za upravljanje z izvorno kodo_ (angl. Source Code Management (SCM)).
|
||||||
|
|
||||||
Poleg nadzora različic Git omogoča, da datoteke spreminja več uporabnikov na različnih računalnikih hkrati.
|
Poleg nadzora različic Git omogoča hkratno spreminjanje datotek več uporabnikov na različnih računalnikih.
|
||||||
Zato je Git #link("https://en.wikipedia.org/wiki/Distributed_version_control")[distribuiran sistem za nadzor različic]
|
Zato je Git #link("https://en.wikipedia.org/wiki/Distributed_version_control")[distribuiran sistem za nadzor različic]
|
||||||
(angl. Distributed Version Control System (DVCS)).
|
(angl. Distributed Version Control System (DVCS)).
|
||||||
]
|
]
|
||||||
|
|
||||||
|
V nadaljevanju bomo obravnavali nasledjne teme:
|
||||||
|
- _Podatkovno skladišče:_ Kako Git uporablja #link("https://sl.wikipedia.org/wiki/Zgo%C5%A1%C4%8Devalna_funkcija")[zgoščevalno funkcijo]
|
||||||
|
in #link("https://en.wikipedia.org/wiki/Merkle_tree")[Merklejeva drevesa] za hranjenje posnetkov vsebine direktorija.
|
||||||
|
- _Zgodovina sprememb:_ Kako zgodovino predstavimo z #link("https://en.wikipedia.org/wiki/Directed_acyclic_graph")[usmerjenim acikličnim grafom],
|
||||||
|
v katerem so vozlišča različice in ki povezuje različice z njihovimi neposrednimi predhodniki.
|
||||||
|
- _Reference_: Kako preproste reference (kazalci) na vsebino omogočajo bliskovito
|
||||||
|
preklaplanje med različicami in preprečijo popolno zmešnjavo, ko več ljudi hkrati spreminja iste datoteke.
|
||||||
|
|
||||||
|
= Podatkovno skladišče
|
||||||
|
|
||||||
|
|
||||||
== Git repozitorij
|
== Git repozitorij
|
||||||
|
|
||||||
|
|
@ -89,14 +104,16 @@ datotekah in direktorijih, ki jih vsebuje.
|
||||||
caption: [Primer posnetka direktorija v Gitu (objekt tipa `tree`). Posnetek vsebuje zgoščene vrednosti datotek in direktorija, ki jih vsebuje. Uporaba zgoščenih vrednosti natančno določa vsebino posnetka direktorija.],
|
caption: [Primer posnetka direktorija v Gitu (objekt tipa `tree`). Posnetek vsebuje zgoščene vrednosti datotek in direktorija, ki jih vsebuje. Uporaba zgoščenih vrednosti natančno določa vsebino posnetka direktorija.],
|
||||||
)
|
)
|
||||||
#note[
|
#note[
|
||||||
Skladišča objektov v Gitu je
|
Skladišča objektov v Gitu je
|
||||||
#link("https://en.wikipedia.org/wiki/Content-addressable_storage")[skladišče vsebinsko naslovljivih objektov].
|
#link("https://en.wikipedia.org/wiki/Content-addressable_storage")[skladišče vsebinsko naslovljivih objektov].
|
||||||
Dostop do objekta je mogoč, če poznamo *zgoščeno vrednost* njegove vsebine. Dejansko je referenca na
|
Dostop do objekta je mogoč, če poznamo *zgoščeno vrednost* njegove vsebine. To pomeni, da je referenca na
|
||||||
posamezen objekt v Gitu preprosto zgoščena vrednost vsebine tega objekta. Poleg tega deluje zgoščena vrednost vsebine kot kontrolna vsota. To pomeni, da lahko enostavno preverimo verodostojnost vsebine, ki je shranjena v Gitu. Skladišče objektov je v direktoriju `.git/objects`.
|
posamezen objekt v Gitu preprosto zgoščena vrednost(angl. hash) vsebine tega objekta. Po drugi strani je
|
||||||
]
|
vsebina objekta določena z njegovo zgoščeno vrednostjo. To pomeni, da lahko enostavno preverimo verodostojnost vsebine, ki je shranjena v Gitu. Git hrani skladišče objektov v direktoriju `.git/objects`.
|
||||||
== Zgodovinski graf sprememb
|
]
|
||||||
Posamezni vnosi so povezani v *usmerjen acikličen graf* (angl. kratica *DAG*), ki ponazarja zgodovino sprememb.
|
|
||||||
Vsak *vnos* je *vozlišče* v grafu in izhaja iz enega ali več starševskih vnosov. Izjema je prvi vnos.
|
= Zgodovinski graf sprememb
|
||||||
|
Posamezni vnosi so povezani v *usmerjen acikličen graf (DAG)*, ki predstavlja zgodovino sprememb.
|
||||||
|
Vsak *vnos* je *vozlišče* v grafu. Vsak vnos izhaja iz enega ali več starševskih vnosov. Izjema je prvi vnos.
|
||||||
*Povezave* v grafu povezujejo vnose z njihovimi starši.
|
*Povezave* v grafu povezujejo vnose z njihovimi starši.
|
||||||
|
|
||||||
#figure(
|
#figure(
|
||||||
|
|
@ -121,7 +138,7 @@ Vsak *vnos* je *vozlišče* v grafu in izhaja iz enega ali več starševskih vno
|
||||||
caption: [Vnosi v Gitu kot usmerjen graf. Vsak vnos(razen prvega) ima povezavo na vnose iz katerih izhaja.],
|
caption: [Vnosi v Gitu kot usmerjen graf. Vsak vnos(razen prvega) ima povezavo na vnose iz katerih izhaja.],
|
||||||
)
|
)
|
||||||
|
|
||||||
== Reference: veje in značke
|
= Kazalci: veje in značke
|
||||||
|
|
||||||
Poleg objektov kot so _vnosi_, _posnetki direktorijev_ in _posnetki datotek_ pozna Git še reference. Reference so kazalci z določenim imenom na posamezen vnos.
|
Poleg objektov kot so _vnosi_, _posnetki direktorijev_ in _posnetki datotek_ pozna Git še reference. Reference so kazalci z določenim imenom na posamezen vnos.
|
||||||
|
|
||||||
|
|
@ -223,3 +240,11 @@ Glagoli (akcije):
|
||||||
- *Rebase* prestavi vnose v trenutno izbrani veji na izbran vnos: `git rebase main`
|
- *Rebase* prestavi vnose v trenutno izbrani veji na izbran vnos: `git rebase main`
|
||||||
|
|
||||||
|
|
||||||
|
Opis dela z Gitom presega namen tega dokumenta. Zato vas raje preusmerimo na uradno dokumentacijo:
|
||||||
|
|
||||||
|
#align(center, text(size: 1.5em)[https://git-scm.com/cheat-sheet])
|
||||||
|
|
||||||
|
Pri pripravi dokumenta sem uporabil Gemini 3. Vse odgovore sem preveril in uredil po svoje.
|
||||||
|
|
||||||
|
Sledi še skica, ki povzame vse komponente Git repozitorija.
|
||||||
|
#include "git-figure.typ"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue