Skip to content

Práce se složkami v Git (základní tahák)

🧠 Základní princip

Git sleduje změny ve složkách a souborech, ale některé operace (kopírování, mazání, přejmenování) je potřeba dělat správně, aby se nezpůsobil problém (např. submodule).


📁 Přidání nové složky do repozitáře

bash
git add NAZEV_SLOZKY
git commit -m "pridana slozka"
git push

📄 Kontrola stavu

bash
git status

👉 ukáže:

  • nové soubory (untracked)
  • změny
  • co bude commitováno

📂 Kopírování složky

bash
cp -r stara_slozka nova_slozka

📌 Příklad:

bash
cp -r Hodina4 Hodina5

⚠️ Důležité (velmi častý problém)

Pokud kopíruješ složku, která byla Git repo:

bash
rm -rf nova_slozka/.git

👉 jinak vznikne:

  • submodule
  • modrá složka
  • šipka v editoru

✏️ Přejmenování složky

Doporučeno:

bash
git mv stara_slozka nova_slozka
git commit -m "rename slozky"
git push

Alternativa:

bash
mv stara_slozka nova_slozka
git add .
git commit -m "rename slozky"
git push

❌ Odstranění složky

Doporučeno:

bash
git rm -r NAZEV_SLOZKY
git commit -m "smazana slozka"
git push

Alternativa:

bash
rm -rf NAZEV_SLOZKY
git add .
git commit -m "smazana slozka"
git push

🔵 Problém: složka je modrá + má šipku

👉 znamená: submodule (repo v repu)

Příčina:

  • složka obsahuje .git

🔧 Oprava submodule

  1. Odstranit z indexu:
bash
git rm --cached NAZEV_SLOZKY
  1. Smazat .git ve složce:
bash
cd NAZEV_SLOZKY
rm -rf .git
cd ..
  1. (volitelně) upravit .gitmodules:
bash
cat .gitmodules

👉 pokud obsahuje danou složku → ručně odstranit záznam

  1. Přidat znovu:
bash
git add NAZEV_SLOZKY
git commit -m "fix: odstraneni submodule"
git push

⚠️ Důležité poznámky

  • git add . přidá vše v aktuální složce
  • git commit ukládá změny lokálně
  • git push odesílá na GitHub

🧠 Shrnutí

OperacePříkaz
Přidánígit add slozka
Kopiecp -r stara nova
Přejmenovánígit mv stara nova
Smazánígit rm -r slozka
Oprava submodulegit rm --cached + rm .git

💡 Tipy

  • vždy používej:
bash
git status
  • pozor na:
bash
rm -rf

👉 maže nevratně

  • pracuj vždy v hlavním repozitáři

🎯 Jedna věta na závěr

👉 složka musí být bez .git, aby byla normální součást repozitáře