Generator .gitignore
Zaznacz technologie i skopiuj gotową listę ignorowanych ścieżek do katalogu głównego repozytorium.
-
1Wprowadź dane
Wpisz treść, wklej tekst lub załaduj plik z dysku. -
2Kliknij przycisk
Narzędzie natychmiast przetworzy Twoje dane w przeglądarce. -
3Pobierz wynik
Skopiuj gotowy tekst lub zapisz plik na urządzeniu.
return "Wynik gotowy w 0.1s";
}
Oceń to narzędzie:
Powiązane narzędzia
Inne narzędzia, które mogą Ci się przydaćGenerator .gitignore — gotowe szablony dla Node, PHP, Pythona i Javy
Generator .gitignore składa listę ignorowanych ścieżek z gotowych bloków: zależności, artefakty budowania, katalogi edytorów, pliki systemowe, sekrety i logi. Zaznacz technologie, których używasz, skopiuj wynik do katalogu głównego repozytorium i od pierwszego commita trzymaj w Gicie wyłącznie kod.
Czym jest plik .gitignore
.gitignore to lista wzorców ścieżek, których Git nie ma proponować do dodania. Nie usuwa niczego z dysku ani z historii — działa wyłącznie na pliki nieśledzone. Dzięki temu git status pokazuje realne zmiany w kodzie, a nie kilkadziesiąt tysięcy plików z node_modules/. Sam plik jest wersjonowany razem z projektem, więc cały zespół pracuje na tych samych regułach.
Co warto ignorować w typowym repozytorium
| Kategoria | Przykładowe wzorce | Dlaczego |
|---|---|---|
| Zależności | node_modules/, /vendor/, .venv/ | Odtwarzalne z pliku blokady, ważą setki megabajtów |
| Artefakty budowania | dist/, build/, target/, *.class | Powstają z kodu i konfliktują przy każdym scaleniu |
| Sekrety | .env, *.pem, *.key | Wyciek poświadczeń jest nieodwracalny |
| Edytory i system | .idea/, .vscode/, .DS_Store, Thumbs.db | Ustawienia lokalne, inne u każdego programisty |
| Logi i cache | *.log, .cache/, .pytest_cache/ | Rosną bez końca i nic nie wnoszą do historii |
Generator świadomie nie ignoruje plików blokady zależności. composer.lock, package-lock.json i yarn.lock powinny trafić do repozytorium, bo tylko one gwarantują, że wdrożenie zainstaluje dokładnie te wersje bibliotek, na których testowałeś kod.
Jak korzystać z generatora
- Zaznacz szablony odpowiadające stosowi technologicznemu projektu. Możesz łączyć kilka, na przykład Laravel i Node.js dla aplikacji z frontendem budowanym przez Vite.
- Kliknij Generuj .gitignore. Wzorce powtarzające się między szablonami trafiają do wyniku tylko raz.
- Skopiuj zawartość i zapisz jako
.gitignorew katalogu głównym repozytorium. - Sprawdź efekt komendą
git status— powinna pokazywać już tylko pliki, które faktycznie chcesz wersjonować.
Przy zakładaniu nowego projektu przyda się przy okazji generator konfiguracji tsconfig.json dla części TypeScriptowej, a na etapie wdrożenia generator pliku .htaccess albo generator manifestu Deployment dla Kubernetes.
Składnia wzorców, której używa Git
Wzorzec bez ukośnika pasuje na każdym poziomie drzewa: *.log ignoruje logi w katalogu głównym i we wszystkich podkatalogach. Ukośnik na początku zakotwicza wzorzec w katalogu z plikiem .gitignore, więc /build dotyczy tylko korzenia, a build/ każdego katalogu o tej nazwie. Ukośnik na końcu zawęża regułę do katalogów. Podwójna gwiazdka przechodzi przez poziomy, na przykład docs/**/*.pdf. Wykrzyknik odwraca regułę, ale ma haczyk: jeżeli wykluczyłeś cały katalog, nie wyjmiesz z niego pojedynczego pliku, dopóki nie odblokujesz samego katalogu.
Nie musisz zgadywać, która reguła zadziałała. Komenda git check-ignore -v ścieżka/do/pliku wypisze plik i numer linii odpowiedzialnej za ignorowanie.
Sekrety — jedyny błąd, którego .gitignore nie cofnie
.env do .gitignore po fakcie nie usuwa go z historii. Jeśli plik z hasłem trafił do commita, który poszedł na zdalne repozytorium, traktuj poświadczenia jako ujawnione: unieważnij je i wygeneruj nowe, zanim zaczniesz czyścić historię.Przepisanie historii narzędziami git filter-repo lub BFG zmienia identyfikatory commitów, więc wymaga uzgodnienia z całym zespołem i wymuszonego pushu. Rotacja klucza jest szybsza, tańsza i tak czy inaczej konieczna.
Plik jest już śledzony — jak go odłączyć
git rm --cached .env git rm -r --cached node_modules git commit -m "Przestan sledzic ignorowane pliki"
Przełącznik --cached usuwa plik z indeksu Gita, ale zostawia go na dysku. Bez tego kroku wpis w .gitignore nie zadziała, bo reguły nie dotyczą plików już śledzonych. Warto potem porównać stan repozytorium przed i po zmianą — pomoże narzędzie do porównywania różnic w kodzie.
Najczęściej zadawane pytania
Czy .gitignore działa w podkatalogach?
Tak. Wzorce bez ukośnika na początku pasują na każdym poziomie drzewa. Dodatkowo każdy podkatalog może mieć własny .gitignore, a jego reguły obowiązują tylko w tym poddrzewie i mają pierwszeństwo nad regułami z katalogów wyżej. To wygodne w monorepo, gdzie poszczególne pakiety produkują różne artefakty budowania.
Jak zignorować wszystkie pliki oprócz jednego?
Najpierw wyklucz wzorzec, potem zrób wyjątek wykrzyknikiem: *.log, a w kolejnej linii !important.log. Kolejność ma znaczenie, bo wygrywa ostatnia pasująca reguła. Wyjątek nie zadziała, jeśli wykluczyłeś cały katalog nadrzędny, bo Git w ogóle do niego nie zagląda.
Gdzie umieścić reguły, których nie chcę commitować?
W pliku .git/info/exclude — działa jak .gitignore, ale nie jest wersjonowany. Reguły dla całego komputera, na przykład katalogi edytora i pliki systemowe, lepiej wpisać do globalnego pliku: git config --global core.excludesFile ~/.gitignore_global. Repozytorium projektu zostaje wtedy wolne od ustawień prywatnych.
Czy commitować composer.lock i package-lock.json?
W aplikacjach tak. Pliki blokady zapisują dokładne wersje zależności i dzięki nim wdrożenie odtwarza środowisko z testów. Ignoruje się je tylko w bibliotekach, które mają działać z szerokim zakresem wersji. Dlatego szablon PHP w tym generatorze wyklucza /vendor/, ale composer.lock zostawia w repozytorium.
Czy .gitignore chroni przed wyciekiem sekretów?
Tylko zapobiegawczo i tylko dla plików jeszcze nieśledzonych. Nie chroni przed git add -f, nie działa na pliki już dodane i nie usuwa niczego z historii. Sekrety trzymaj poza repozytorium, w zmiennych środowiskowych albo w menedżerze sekretów, a w Gicie wersjonuj wyłącznie .env.example z pustymi wartościami.