git init

Tworzy nowe puste repozytorium Git w bieżącym lub wskazanym katalogu.

git init to komenda, od której zaczyna się prawie każdy projekt w Git. Tworzy nowe, puste repozytorium w bieżącym (albo wskazanym) katalogu — czyli zakłada ukryty folder .git/, w którym Git trzyma całą historię, gałęzie i konfigurację. Po jej wykonaniu masz katalog roboczy gotowy do śledzenia zmian: wystarczy git add i git commit. Działa identycznie na Linuksie, macOS i Windows, a uruchomiona w katalogu, który już jest repozytorium, bezpiecznie go reinicjalizuje (nie kasuje commitów).

Składnia i najważniejsze opcje

Podstawowa forma: git init [-b ] [--bare] [katalog]

  • -b (lub --initial-branch=) — ustawia nazwę pierwszej gałęzi, np. main zamiast domyślnego master.
  • --bare — tworzy repozytorium bez katalogu roboczego, używane jako centralne miejsce do push/pull (na serwerze).
  • -q (lub --quiet) — wycisza komunikaty, zostawia tylko błędy i ostrzeżenia.
  • --separate-git-dir=<ścieżka> — trzyma katalog .git w innym miejscu, a w projekcie zostawia plik-wskaźnik do niego.
  • --template= — inicjalizuje repo z własnego szablonu (np. gotowe hooki).
  • --shared[=] — ustawia uprawnienia tak, by repo mogła współdzielić grupa użytkowników.

Przykłady użycia

  • git init — zakłada repozytorium w bieżącym katalogu (tworzy .git/).
  • git init moj-projekt — tworzy katalog moj-projekt i od razu robi z niego repozytorium.
  • git init -b main — zakłada repo z gałęzią startową nazwaną main, bez późniejszego zmieniania nazwy.
  • git init --bare projekt.git — tworzy gołe repozytorium serwerowe, do którego zespół wysyła zmiany.
  • git init --quiet — to samo co zwykłe git init, tylko bez gadatliwego komunikatu.

Częste błędy i pułapki

Klasyk: odpalasz git init w katalogu domowym albo o jeden poziom za wysoko i nagle śledzisz pół dysku. Sprawdź pwd przed startem. Jeśli przypadkiem założysz repo nie tam, gdzie trzeba, wystarczy usunąć katalog .git/ (rm -rf .git) — pliki projektu zostają nietknięte. Pamiętaj, że --bare nie da się commitować lokalnie, bo nie ma katalogu roboczego; to repo wyłącznie do synchronizacji. Drobna różnica między wersjami: starsze Git (sprzed 2.28) nie mają flagi -b — tam ustawisz domyślną gałąź przez git config --global init.defaultBranch main. I jeszcze jedno: git init nie podłącza zdalnego repozytorium — adres na GitHubie dodajesz dopiero przez git remote add.

Powiązane komendy: git clone, git add, git commit, git remote, git config.