Git - Kapitola 11. GIT slovníček
alternate, bare repository, blob object, branch, cache, chain, changeset, checkout, cherry-picking, clean, commit, commit object, core git, DAG, dangling object, detached HEAD, dircache, directory, dirty, ent, evil merge, fast forward, fetch, file system, git archive, grafts, hash, head, head ref, hook, index, index entry, master, merge, object, object database, object identifier, object name, object type, octopus, origin, pack, pack index, parent, pickaxe, plumbing, porcelain, pull, push, reachable, rebase, ref, reflog, refspec, repository, resolve, revision, rewind, SCM, SHA1, shallow repository, symref, tag, tag object, topic branch, tracking branch, tree, tree object, tree-ish, unmerged index, unreachable object, upstream branch, working tree
- alternate (alternativní databáze objektů)
- Díky mechanismu alternace (výměny) může repositář dědit část objektové databázez jiné objektové databáze, která se nazývá which is called "alternativní".
- bare repository (holý repositář)
- Holým repositářem je obvykle vhodně pojmenovaný adresář s příponou
.gitdo kterého nejsou načteny žádné lokální kopie verzovaných souborů. To znamená že všechny administrativní a konfigurační souborygitu které by za normálních okolností byly přítomné ve skrytém podadresáři.gitjsou přítomny přímo v adresářirepository.git, který žádné další soubory zde uloženy nejsou. Lidé publikující veřejné repositáře obvykle zpřístupňují i holé repositáře. - blob object (blob objekt)
- Netypovaný objekt, např. obsah souboru.
- branch (větev)
- "Větví" je aktivní směr vývoje. Nejnovější commit ve větvi nazýváme vrcholem dané větve. Na vrchol větve odkazuje head (hlava) větve, která se posouvá kupředu v souladu s tím jak je ve větvi postupuje vývoj. Jeden git repositář může obsahovat informace o libovolném počtu větví, ale váš pracovní strom je asociován pouze s jednou z nich (nazývanou "aktuální" nebo "načtený" větev), a HEAD ukazuje na tuto větev.
- cache
- Zastaralý výraz pro: index.
- chain (řetěz, posloupnost)
- Seznam objektů, kde každý objekt ze seznamu obsahuje odkaz na svého následníka (například, následníkem commitu by mohl být jeden z jeho rodičů).
- changeset (sada změn)
- Označení pro "commit" používané v BitKeeper/cvsps. Protože git neukládá změny ale stavy, nedává v gitu termín "changeset" žádný rozumný smysl.
- checkout (načtení)
- Proces aktualizace celého nebo jen části pracovního stromu obsahem tree objektu nebo blobu z databáze objektů, a aktualizace indexu a HEAD pokud byl celý pracovní strom nasměrován na novou větev.
- cherry-picking (výběr třešniček na dortu)
- V SCM žargonu pojem "cherry pick" znamemá výběr podmnožiny změn ze série provedených změn (typicky commitů) a jejich zápis jako nové série změn do jiné sady zdrojových kódů (codebase). V GITu je toto prováděno příkazem "git cherry-pick" který extrahuje změny zavedené existujícím commitem a jejich zapsání na vrchol aktuální větve jako nový commit.
- clean (čistý)
- Pracovní strom je označován jako čistý, pokud odpovídá revizi na kterou ukazuje aktuální head. Viz. také pojem "špinavý".
- commit
-
Jako podstatné jméno: Konkrétní bod v git historii; celá historie projektu je reprezentována množinou navzájem souvisejících commitů. Slovo "commit" je gitem často používáno na místech kde by jiné verzovací systémy používaly slova "revize" nebo "verze". Používá se také jako zkratka pro commit objekt.
Jako sloveso: Proces ukládání nového snapshotu (otisku) stavu projektu do git historie, a to vytvořením nového commitu reprezentujícího aktuální stav indexu a posunutím HEAD tak aby ukazoval na tento nový commit.
- commit object (commit objekt)
- Objekt obsahující informace o konkrétní revizi, jako jsou například její předci, commitující osoba, autor, datum a tree (strom) objekt reprezentující hlavnímu adresáři ukládané revize.
- core git (jádro gitu)
- Základní datové struktury a nástroje gitu. Poskytují pouze omezené nástroje pro správu zdrojových kódů.
- DAG
- Orientovaný acyklický graf (directed acyclic graph). Commit objekty jsou uspořádány do orientovaného acyklického grafu, protože každý commit má rodiče (proto orientovaný), a graf commit objektů je acyklický (neexistuje žádný řetěz začínající a končící ve stejném objektu).
- dangling object (plandající objekt)
- Nedosažitelný objekt který není dosažitelný ani z jiných nedosažitelných objektů; na plandající objekt neexistují v repositáři žádné odkazy reference ani na ně neodkazuje žádný objekt.
- detached HEAD (odpojený HEAD)
- Za normálních okolností HEAD obsahuje název větve. Nicméně, git umožňuje také načtení libovolného commitu který nemusí být nutně vrcholem příslušné větve. V tom případě nazýváme HEAD jako "odpojený".
- dircache
- Jste véééééélmi pozadu. Viz. index.
- directory (adresář)
- Výpis který dostanete po zadání "ls" :-)
- dirty (špinavý)
- Pracovní strom označujeme jako "špinavý" pokud obsahuje úpravy které zatím nebyly commitnuty do aktuální větve.
- ent
- Synonymum k "tree-ish" (stromový) oblíbené některými naprostými geeky. Podrobnější vysvětlení viz.
http://en.wikipedia.org/wiki/Ent_(Middle-earth). Tento výraz nepoužívejte, ať zbytečně nemateme lidi - evil merge (zlý merge)
- Zlým mergem je merge který zavádí změny které se neobjevily v žádném rodiči.
- fast forward (posun rychle kupředu)
- Posunem kupředu je speciální případ operace merge při které máte revizi a do ní "mergujete" změny z další větve které jsou následníky toho co již máte. V těchto případech nemusíte vytvářet nový merge commit ale namísto toho stačí pouze aktualizovat na tuto revizi. Toto se bude často stávat na sledovací (tracking) větvi pro vzdálený repositář.
- fetch (stažení)
- Stažení větve znamená získání head reference ze vzdáleného repositáře, aby bylo možno zjistit které objekty chybí z lokální objektové databáze, a jejich následné načtení. Viz. také příkaz git-fetch(1).
- file system (souborový systém)
- Linus Torvalds původně navrhl git jako souborový systém v uživatelském prostoru (user space file system), tj. jako infrastrukturu pro ukládání souborů a adresářů. To zajišťuje efektivitu a rychlost gitu.
- git archive (git archiv)
- Synonymum k pojmu repositář (pro uživatele systému "arch).
- grafts
- Grafts umožňuje sloučení dvou jinak samostatných vývojových linií zaznamenáním falešných informacích o předcích commitů. Tímto způsobem můžete git přinutit k předstírání že množina rodičů daného commitu je odlišná od toho co bylo zaznamenáno při vytvoření commitu. Konfiguruje se pomocí souboru
.git/info/grafts. - hash
- V souvislosti s gitem se jedná o synonymum k názvu objektu.
- head (hlava, vrchol)
- Pojmenovaný odkaz na commit na vrcholu větve. Vrcholy jsou ukládány v
$GIT_DIR/refs/heads/, pokud nejsou používány tzv. packed refs. (Viz git-pack-refs(1).) - HEAD
- Aktuální větev. Detailněji: Váš pracovní strom je obvykle odvozen od stromu na který ukazuje odkazuje HEAD. HEAD je referencí na jednu z head referencí ve vašem repositáři, s výjimkou situace kdy používáte odpojený HEAD, v tomto případě může odkazovat libovolný commit.
- head ref
- Synonymum k head.
- hook
- Během normálního spuštění některých git příkazů jsou volány uživatelské skripty které vývojářům umožňují rozšiřování funkcionality nebo provádění různých kontrol. Hooky typicky umožňují předběžné ověření a případné zrušení příkazu, a umožňuje zaslání oznámení po provedení operace. Hook skripty se nachází v adresáři
$GIT_DIR/hooks/, a zprovozněny jsou prostým odstraněním.samplepřípony ze jména souboru. V dřívější verzi gitu byste je také museli označit jako spustitelné. - index
- Kolekce suoborů s informacemi o stavu, jejíž obsah je uložen ve formě objektů. Index je uložená verze vašeho pracovního stromu. Po pravdě řečeno, může obsahovat také druhou a třetí verzi pracovního stromu, které jsou používány při mergování.
- index entry (položka indexu)
- Informace týkající se konkrétního souboru, uložené v indexu. Položka indexu může být odmergována, pokud merge začal ale ještě neskončil (tj. pokud index obsahuje více verzí daného souboru).
- master (hlavní větev)
- Výchozí vývojová větev. Kdykoliv vytvoříte git repositář, je vytvořena větev pojmenovaná "master", a stává se aktivní větví. Ve většině případů, tato větev obsahuje lokální vývoj, ačkoliv to je pouze konvence a není to vyžadováno.
- merge (sloučení)
-
Jako sloveso: Začlenění obsahu jiné větve (případně i z externího repositáře) do aktuální větve. V případě že začleňovaná větev je z jiného repositáře, je toto provedeno tak že nejdříve je stáhnuta vzdálená větev a poté je výsledek sloučen do aktuální větve.Tato kombinace operací stažení a sloučení se nazývá pull. Sloučení je prováděno automaticky tak že jsou identifikovány změny od posledního rozdělení větví, a poté jsou všechny tyto změny aplikovány současně. V případě že některé změny kolidují může být pro dokončení sloučení nutný manuální zásah.
Jako podstatné jméno: pokud se nejedná o fast forward, má úspěšné sloučení za následek vytvoření nového commitu reprezentujícího výsledek sloučení, který má vrcholy slučovaných větví uvedeny jako rodiče. Takový commit je nazýván jako "merge commit", ale často také pouze "merge".
- object (objekt)
- Nejmenší ukládaná jednotka (unit of storage) v gitu. Je jednoznačně identifikována SHA1 svého obsahu. V důsledku toho objekt nemůže být měněn.
- object database (databáze objektů)
- Ukládá množiny "objektů", přičemž každý jednotlivý objekt je identifikován svým objektovým jménem. Objekty jsou obvykle umístěny v adresáři
$GIT_DIR/objects/. - object identifier (identifikátor objektu)
- Synonymum k jménu objektu.
- object name (jméno objektu)
- Unikátní identifikátor objektu. Jedná se o hash obsahu objektu získaný algoritmem "Secure Hash Algorithm 1" a obvykle je prezentováno 40 znaky v hexadecimálním kódování.
- object type (typ objektu)
- Jeden z identifikátorů "commit", "tree", "tag" nebo "blob" popisující typ objektu.
- octopus (chobotnice, chobotnička)
- Merge (sloučení) více než dvou větví. A také označení inteligentního dravce (predátora).
- origin (původ)
- Výchozí "upstream" (nadřazený) repositář. Mnoho projektů má alespoň jeden nadřazený projekt který sledují (track). K tomuto účelu je standardně používán origin. Nové aktualizace z nadřazeného repositáře budou načítány do vzdálených tracking větví pojmenovaných origin/name-of-upstream-branch, které můžete vidět po zadání
git branch -r. - pack (balík)
- Množina objektů které byly zkomprimovány do jediného souboru (aby se ušetřilo místo nebo aby je bylo možno efektivně přenášet).
- pack index (index balíku)
- Seznam identifikátorů, a dalších informací, objektů v balíku, který je využíván pro efektivní přístup k obsahu balíku.
- parent (rodič)
- Commit objekt obsahuje (eventuálně prázdný) seznam logických předchůdců ve vývoji, tj. svých rodičů.
- pickaxe (krumpáč)
- Termín krumpáč označuje volbu pro diffcore rutiny které pomáhají s výběrem změn které přidávají nebo mažou zvolený řetězec. Pomocí volby
—pickaxe-alllze zobrazit celý changeset který přidal nebo odstranil, řekněme, určitý řádek textu. Viz. příkaz git-diff(1). - plumbing (potrubí, základní výbava)
- Roztomilé označení pro core git.
- porcelain (porcelán)
- Milý název pro programy a kolekce programů závisící na core git, představující "high level" přístup k jádru gitu. Porcelains poskytují bohatší SCM rozhraní než jádro gitu.
- pull (natažení, tah)
- Natáhnout větev znamená její načtení a sloučení. Viz. také git-pull(1).
- push (tlačit, natlačit)
- Natlačit větev znamená získat head ref ze vzdáleného repositáře, zjistit zda se jedná o přímého předka head ref lokální větve, a pokud ano, vložení všech objektů, které jsou dosažitelné z head ref lokální větve, a které chybí ve větvi vzdálené, do vzdálené databáze objektů, a aktualizaci vzdálené head ref. Pokud vzdálená head reference není předkem lokální head reference, push selže.
- reachable (dosažitelný)
- Všichni předci daného commitu jsou takzvaně "dosažitelní" z tohoto commitu. Obecněji, jeden objekt je dosažitelný z druhého pokud se z prvního objektu lze na druhý objekt dostat přes řetěz který sleduje tagy na tagovaný objekt, commity na jejich rodiče nebo stromy, a stromy na stromy nebo bloby které obsahují.
- rebase (změna základu, přeskládání)
- Pro opakovanou aplikaci posloupnosti z dané větve na jiný základ (base, výchozí revize), a reset head odkazu v dané větvi na výsledek této operace.
- ref
- 40-znaková hex reprezentace SHA1 nebo jméno označující konkrétní objekt. Mohou být uloženy v adresáři
$GIT_DIR/refs/. - reflog
- Reflog zachycuje lokální "histori" dané ref. Jinými slovy, může vám říct jaká byla třetí revize od konce v _tomto_ repositáři, a jaký byl stav v _tomto_ repositáři včera ve 21:14. Detaily najdete v dokumentaci příkazu git-reflog(1).
- refspec
- Položka "refspec" je používána příkazem fetch a push k popisu mapování mezi vzdálenými ref a lokálními ref. Kombinovány jsou přes dvojtečku ve formátu <src>:<dst>, s volitelným znakem plus na začátku, +. Například:
git fetch $URL refs/heads/master:refs/heads/originznamená "vezmi master branch head z $URL a ulož ji jako můj origin branch head". Agit push $URL refs/heads/master:refs/heads/to-upstreamznamená "publikuj mou master branch head jako to-upstream větev na $URL". Viz. také git-push(1). - repository (repositář)
- Kolekce refs společně s databází objektů obsahující všechny objekty které jsou dostupné z refs, případně doplněné o meta data z jedné nebo více nadstaveb (porcelains). Repositář může sdílet databáze objektů s dalšími repositáři přes alternates mechanism.
- resolve (vyřešit)
- Proces manuální opravy toho co zbylo po neúspěšném automatickém merge.
- revision (revize)
- Konkrétní stav souborů a adresářů které byly uloženy v databázi objektů. Odkazuje na něj commit object.
- rewind (převinout zpět)
- Zahodit část vývoje, tj. přiřadit do head dřívější revizi.
- SCM
- (Nástroj pro) správu zdrojových kódů. (Source code management (tool)).
- SHA1
- Synonymum pro jméno objektu.
- shallow repository (mělký repositář)
- Mělký repositář má nekompletní historii ze které byly vypáleny (cauterized away) rodiče některých commitů (jinými slovy, git je instruován aby předstíral že dané commity nemají rodiče, i přes to že jsou zaznamenány v commit objektu). To se občas hodí když vás zajímá jen nedávná historie projektu i přes to že skutečná historie zaznamenaná v nadřazeném repositáři je daleko rozsáhlejší. Mělký repositář je vytvořen předáním volby
—depthpříkazu git-clone(1), a jeho historie může být později prohloubena příkazem git-fetch(1). - symref
- Symbolický odkaz: namísto zaznamenání přímo SHA1 id, je ve formátu ref: refs/něco a v okamžiku použití je rekurzivně dereferencován na tuto referenci. HEAD je ukázkový příklad symref. Se symbolickými referencemi je možno manipulovat příkazem git-symbolic-ref(1).
- tag
- ref odkazující na tag nebo commit objekt. Ve srovnání s head, tagy nejsou modifikovány commity. Tag (ne tag objekty) jsou ukládány v adresáři
$GIT_DIR/refs/tags/. Git tag nemá nic společného s Lisp tagy (které by se v kontextu gitu nazývaly objektový typ). Tagy jsou typocky používány k označení určitého okamžiku v historickém řetězu commitů. - tag object (tag objekt)
- Objekt objasující ref ukazující na jiný objekt, a který může obsahovat zprávu stejně jako commit objekt. Může obsahovat také (PGP) podpis, a v tom případě se nazývá "podepsaný tag objekt".
- topic branch (tématická větev)
- Standardní git větev která je vývojářem používána k identifikaci koncepčního směru vývoje. Protože větve jsou velice jednoduchá a levná, je často vhodné mít několik malých větví s tím že každá obsahuje vývoj velice jasně definovaných koncepcí, nebo menší postupné ale navzájem související změny.
- tracking branch (sledovací větev)
- Obyčejná git větev používaná ke sledování změn z jiného repositáře. Sledovací větev by neměla obsahovat přímé úpravy ani by do ní neměly být ukládány lokální commity. Sledovací větev může být obvykle identifikována jako pravá část ref v pull: refspec.
- tree (strom)
- Buď se jedná o pracovní strom, nebo tree objekt společné se závislým blobem a tree objekty (tj. uložená reprezentace pracovního stromu).
- tree object (tree objekt)
- Objekt obsahující seznam jmen souborů a jejich módů společně s ref odkazy na související bloby a/nebo tree objekty. Tree je ekvivalent k adresáři.
- tree-ish (stromový)
- Ref ukazující buď na commit objekt, tree objekt, nebo tag objekt odkazující na tag nebo commit nebo tree objekt.
- unmerged index (nesloučený index)
- Index který obsahuje nezmergované index položky.
- unreachable object (nedosažitelný objekt)
- Objekt který není dosažitelný z větve, tagu, nebo nějaké jiné reference.
- upstream branch (nadřazená větev)
- Výchozí větev která je slučována do aktuální větve (nebo větev vzhledem ke které je v příslušné větvi používána operace rebase). Konfiguruje se přes branch.<name>.remote a branch.<name>.merge. Pokud upstream větev pro A je origin/B říkáme někdy že "A sleduje origin/B".
- working tree (pracovní strom)
- Strom skutečně načtených souborů. Pracovní strom je obvykle ekvivalentní s HEAD plus jakékoliv lokální změny které jste provedli ale zatím necommitnuli.




