Začínám s Gitem: odštěpení složky do vlastního repozitáře

Pro co nejrychlejší start na novém projektu vždy jen vytvořím složku v repu ales.net. Tím se bez jakéhokoliv nastavování mohu rovnou pustit do práce a klientovi se automaticky přiřadí nová subdoména.

S předáním finálního webu je také ideální projekt vyčlenit a předat i historii vývoje. S git filter-branch je to otázka pár minut a zároveň jedna z mála operací, kdy zavírám Fork a skáču do Terminálu:

cd Sites
git clone ales.net nazevprojektu
cd nazevprojektu

Těmito třemi příkazy jsem se přemístil do složky, ve které držím všechny weby, vytvořil kopii (a přejmenoval na nazevprojektu) hlavního repozitáře a přemístil se do ní. Pak pro jistotu odeberu původní remote a nechám repozitář přefiltrovat:

git remote rm origin
git filter-branch --subdirectory-filter nazevprojektu

Nastavení --subdirectory-filter nazevprojektu zajistí, že všechny commity sahající do složky projektu zůstanou a historie ostatních složek bude zahozena. Zároveň se obsah složky posune o úroveň výš do kořenového adresáře.

Výsledkem je čistá historie s jasnou posloupností, nový repozitář se však může zdát datově velký. A nezdá, stále si totiž nese tíhu původního. Rychlého zmenšení lze dosáhnout příkazem git gc.

Pravděpodobně lze použít i efektivnější způsob, protože po nahrání a čistém naklonování je repozitář ještě menší. Ale zatím nevím jak a zároveň mám radši jednopříkazová řešení.


Pomohlo? Tento článek se vztahuje k mým začátkům s Gitem. Bude jich víc.