Ako si vytvoriť čistý klon triedneho repozitára
KNIFE – Knowledge In Friendly Examples Séria: Systemic Thinking in IT & Digital Fabrication Úroveň: Beginner Tagy:
gittutorialonboardingtemplatebeginner
⚡ Rýchly návod (Top)
git clone --depth 1 <URL-sablony> <moj-priecinok>
cd <moj-priecinok>
rm -rf .git
git init
git add -A
git commit -m "Initial commit"
Výsledok: <moj-priecinok>/ je nový, samostatný git repozitár s jedným
commitom — celý obsah šablóny, žiadna jej história.
🎯 Čo rieši (účel, cieľ)
Keď niekto dostane príkaz "sprav si klon tohto repozitára", najprirodzenejšia
reakcia je git clone <url>. Problém: to neprenesie len obsah, ale celú
históriu zdrojového repozitára — každý commit, každú správu, každého
autora, ktorý kedy na šablóne pracoval.
Pri jednorazovom template repozitári to spôsobí tri reálne problémy:
- Cudzia história v tvojom repozitári.
git logukazuje commity niekoho iného, nie tvoju prácu — orientácia ajgit blamesú od začiatku znečistené. - Skrytý vzťah k pôvodnému repu. Klon si ponecháva
originsmerujúci na šablónu — ľahko sa stane, že niekto omylom pushne (alebo sa pokúsi pushnúť) do cudzieho repozitára namiesto vlastného. - Bez štandardu si to každý vyrieši inak — alebo skopíruje zlý postup od niekoho iného. Presne to je dôvod, prečo je toto KNIFE, nie len jednorazová poznámka: raz zapísaný postup sa dá odovzdať ďalej — od učiteľa študentom, aj neskôr medzi študentami navzájom.
🧩 Ako to rieši (princíp)
flowchart LR
T["Template repozitár\n(cudzia história, N commitov)"]
S["Shallow clone\n--depth 1"]
C["rm -rf .git\n(zahoď históriu)"]
N["git init\n(nová história)"]
O["Vlastný repozitár\n(1 commit, tvoj)"]
T -->|clone| S --> C --> N --> O
Tri kroky, každý s jasným dôvodom:
git clone --depth 1— stiahne len aktuálny stav súborov, nie celú históriu (rýchlejšie, menej dát, ale história sa aj tak preberie do.git/).rm -rf .git— odstráni prevzatý.gitadresár úplne. Týmto zmizne história aj prepojenie naoriginšablóny.git init+git add -A+git commit— založí úplne novú, prázdnu históriu s jediným commitom: "toto je môj štart".
🧪 Ako to použiť (aplikácia)
Krok za krokom:
-
Over si URL šablóny, ktorú ti dal učiteľ/tím lead.
-
Zvoľ si názov priečinka podľa dohodnutej konvencie — v predmete STHDF napr.
ST-042-MojeMeno(individuálna práca) aleboPRJ-017-NazovProjektu(tímový projekt). Konvencia sa neskôr znova použije pri publikovaní výstupov, takže sa jej drž od začiatku. -
Spusti tri príkazy z Rýchleho návodu vyššie.
-
Založ si prázdny repozitár na GitHube (bez README, bez
.gitignore— tie už máš z klonu) a pripoj ho:git remote add origin <URL-tvojho-noveho-repozitara>
git branch -M main
git push -u origin main -
Over si, že
git remote -vukazuje TVOJ repozitár, nie šablónu.
Konkrétny príklad z praxe: presne týmto postupom vznikol štart
repozitára pre nový ročník predmetu — 2026_sthdf_class_template →
klon → class_sthdf_2026-2027, s jedným "Initial commit" namiesto
prevzatej histórie desiatok predchádzajúcich iterácií šablóny.
📜 Detailný článok
Prečo nie obyčajný git clone? Bez --depth 1 a bez následného
vyčistenia .git/ zdedíš všetko — vrátane vecí, ktoré v šablóne nemuseli
byť určené na verejné šírenie (staré poznámky, rozpracované commity,
mená predchádzajúcich autorov). Pri jednorazovom štarte nového projektu
to nemá žiadnu hodnotu, len šum a riziko.
Prečo nie degit alebo iný špecializovaný nástroj? Existujú nástroje
(napr. npx degit), ktoré robia presne toto v jednom príkaze. Zámerne tu
ale ide o postup len s holým gitom — funguje všade, kde je git
nainštalovaný, bez závislosti na Node.js/npm alebo inom runtime. Pre
skupinu, kde nie každý má rovnaké vývojové prostredie, je to
spoľahlivejší spoločný menovateľ.
Prečo rm -rf .git a nie napr. git checkout --orphan? --orphan
vytvorí novú vetvu bez rodičov, ale pôvodné commity zostávajú v
repozitári dosiahnuteľné (kým ich git gc nezmaže) a origin zostáva
nastavený na šablónu. rm -rf .git + git init je jednoznačnejšie:
po tomto kroku v priečinku neexistuje žiadna stopa po pôvodnom
repozitári.
💡 Tipy a poznámky
- Priečinok už existuje?
git cloneodmietne klonovať do neprázdneho priečinka — over si názov vopred, alebo klonuj do dočasného mena a premenuj. - Zabudol si
rm -rf .git? Spoznáš to podľa toho, žegit logukazuje cudzie commity. Over si to hneď po klone (git log --onelineby mal ukázať len históriu šablóny, kýmgit initešte nespravíš). git pushzlyhá s "Permission denied"? Skontrolujgit remote -v— ak stále ukazuje na šablónu namiesto tvojho repozitára,.gitsa nevymazal správne.- Windows: postup funguje rovnako v Git Bash;
rm -rf .gitvo PowerShell nahraďRemove-Item -Recurse -Force .git.
✅ Hodnota / Zhrnutie
Tri príkazy namiesto opakovaného vysvetľovania naživo — a hlavne jeden zapísaný, opakovateľný postup namiesto toho, aby si ho každý študent (alebo každý nový ročník) objavoval nanovo, prípadne prevzal nesprávnu verziu od spolužiaka. Funguje pre ľubovoľný template repozitár, nielen pre STHDF — je to všeobecný vzor onboardingu do nového projektu.
Zdroje
Vzniknuté priamo z prípravy 2026_sthdf_class_template pre ročník
STHDF 2026-2027 (repozitár 06-STH-Projects/2026_sthdf_class_template,
skript tools/clone-student-template.sh) — zapísané ako samostatné
KNIFE, aby bol postup prenositeľný aj mimo tohto jedného predmetu.