git clone to pierwsza komenda, jaką wpisujesz, gdy chcesz mieć cudze (albo własne, ale zdalne) repozytorium u siebie na dysku. Pobiera całą historię projektu z podanego adresu, tworzy nowy katalog lokalny, rozpakowuje do niego najnowszą wersję plików i od razu konfiguruje połączenie ze zdalnym repo pod nazwą origin. Krótko: bierzesz URL z GitHuba czy GitLaba, robisz git clone i masz gotowy, w pełni działający klon z którym możesz pracować offline.
Składnia i najważniejsze opcje
Podstawowa forma wygląda tak: git clone [opcje]
-b(alias--branch) — wybiera gałąź lub tag, na której repo ma się znaleźć po sklonowaniu, zamiast domyślnej.--depth— płytki klon: pobiera tylkonostatnich commitów zamiast całej historii. Mniej danych, szybciej.--single-branch— pobiera tylko jedną gałąź (domyślnie włącza się razem z--depth).--recurse-submodules— od razu inicjalizuje i pobiera submoduły, więc nie zostajesz z pustymi katalogami.--bare— klon bez katalogu roboczego (same dane Gita), używany na serwerach jako repo centralne.--mirror— lustrzana kopia wszystkich referencji, przydatna do migracji repo.-o(--origin) — nadaje zdalnemu repo inną nazwę niż domyślnyorigin.--filter=blob:none— klon częściowy: pobiera obiekty dopiero gdy są potrzebne (świetne dla wielkich repozytoriów).
Przykłady użycia
git clone https://github.com/user/projekt.git— klasyka: pobiera całe repo do kataloguprojekt.git clone [email protected]:user/projekt.git moj-katalog— to samo przez SSH, ale lądujesz w katalogumoj-katalog.git clone --depth 1 https://github.com/user/projekt.git— płytki klon z jednym commitem, idealny do CI albo gdy nie potrzebujesz historii.git clone -b develop https://github.com/user/projekt.git— pobiera od razu gałąźdevelopzamiast głównej.git clone --recurse-submodules https://github.com/user/projekt.git— projekt z submodułami zaciągnięty w komplecie, bez ręcznegogit submodule update.
Częste błędy i pułapki
HTTPS kontra SSH. Adres https:// zwykle wymaga loginu/tokenu, a git@... wymaga skonfigurowanego klucza SSH. Jeśli prywatne repo zwraca Permission denied, najpierw sprawdź, którego protokołu używasz.
Płytki klon ma haczyk. Po --depth 1 nie sięgniesz starszych commitów ani nie zrobisz pełnego git log. Gdy nagle ich potrzebujesz, dociągnij historię przez git fetch --unshallow.
Katalog musi być pusty. Git odmówi klonowania do katalogu, w którym już coś jest. Albo podaj inną nazwę, albo posprzątaj.
Zapomniane submoduły. Bez --recurse-submodules dostajesz puste foldery i potem dziwisz się, czemu build nie działa.
Powiązane komendy: git init, git remote, git fetch, git pull, git submodule.