git clone

Klonuje istniejące repozytorium do nowego katalogu lokalnego.

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 tylko n ostatnich 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ślny origin.
  • --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 katalogu projekt.
  • git clone [email protected]:user/projekt.git moj-katalog — to samo przez SSH, ale lądujesz w katalogu moj-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łąź develop zamiast głównej.
  • git clone --recurse-submodules https://github.com/user/projekt.git — projekt z submodułami zaciągnięty w komplecie, bez ręcznego git 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.