Każde repozytorium Git potrzebuje pliku .gitignore. To zwykła lista ścieżek, których Git *nie* ma śledzić: artefaktów kompilacji, folderów zależności, konfiguracji IDE i systemowych śmieci w rodzaju .DS_Store. Bez niego pierwszy commit przypadkiem wciągnie node_modules/, .env i target/, a sprzątanie tego bałaganu jest dużo bardziej irytujące niż przygotowanie pliku od razu.
Każdy ekosystem ignoruje co innego, a większość projektów łączy kilka naraz. Typowa aplikacja Node + TypeScript na MacBooku z VS Code potrzebuje już sumy czterech różnych list. Pisanie tego z pamięci kończy się zapomnianym coverage/, wyciekiem .env albo commitem zabłąkanego .idea/ z JetBrains kogoś z zespołu.
Dlatego ten generator łączy wyselekcjonowane szablony z kanonicznego projektu github/gitignore, czyli te same reguły, na których opierają się oficjalne podpowiedzi GitHuba, i pozwala je składać razem. Zaznacz pasujące pola, a dostaniesz jeden .gitignore bez duplikatów, gotowy do wklejenia do repozytorium. Bez kont, bez wysyłania plików, wszystko działa w przeglądarce.
Czego nauczysz się, tworząc .gitignore
Wzorce w .gitignore używają składni glob: *.log ignoruje każdy plik logu, build/ ignoruje folder, a !important.log przywraca konkretny plik, nawet jeśli pasuje do niego glob.
Wzorce działają względem lokalizacji pliku .gitignore, więc .gitignore w src/ dotyczy tylko plików w src/.
Pliki już śledzone **nie** są ignorowane wstecz. Jeśli scommitujesz node_modules/, a potem dodasz go do .gitignore, nadal musisz wykonać git rm -r --cached node_modules, aby przestać go śledzić.
Może istnieć wiele plików .gitignore jednocześnie: w katalogu głównym repozytorium, w podfolderach oraz globalny ~/.gitignore_global dla osobistych narzędzi, takich jak JetBrains czy twój system operacyjny.
Przy negacjach liczy się kolejność: późniejszy !pattern działa tylko wtedy, gdy wcześniejsza reguła faktycznie zignorowała plik. Negacja folderu nie przywróci pliku w jego wnętrzu.
Jak krok po kroku wygenerować .gitignore
1
Wybierz gotowy zestaw (opcjonalnie)
Jeśli projekt pasuje do popularnego połączenia (Next.js, Django, Rails), kliknij zestaw, aby od razu zaznaczyć wszystkie potrzebne pola. Potem usuń lub dodaj kilka, jeśli masz coś jeszcze.
2
Dodaj języki
Każdy język ma artefakty do zignorowania: Node ma node_modules/, Python __pycache__/ i środowiska wirtualne, Java target/ i pliki .class. Wybierz języki, które twój projekt faktycznie kompiluje.
3
Dodaj frameworki
Oprócz reguł języka frameworki dokładają własne katalogi kompilacji: Next.js chce .next/ i .vercel, Django staticfiles/ i db.sqlite3, Rails tmp/ i /storage/*. Zaznacz framework, jeśli go używasz.
4
Dodaj edytory i systemy
Dodaj szablony edytorów, których używa **zespół** (a nie tylko ty). Jeśli ktoś korzysta z JetBrains lub Vima, uwzględnij je. Potem dodaj systemy operacyjne w zespole: macOS zostawia .DS_Store, Windows Thumbs.db, i oba łatwo scommitować przez przypadek.
5
Skopiuj lub pobierz
Prawy panel pokazuje połączony wynik bez duplikatów. Kliknij **Kopiuj**, aby wkleić go do .gitignore w katalogu głównym repozytorium, albo **Pobierz**, aby od razu zapisać plik.
Absolutne minimum dla każdego projektu Node współdzielonego z kimś na macOS. Nawet mały projekt poboczny powinien mieć te reguły: bez .DS_Store i node_modules/ będziesz walczyć z bezsensownymi konfliktami.
Typowy backend w Django rozwijany w PyCharmie. Zwróć uwagę, że lokalny db.sqlite3 jest ignorowany: produkcja go nie używa, a jego commit ujawnia dane deweloperskie i psuje świeże klony innym osobom z zespołu.
Nadpisz regułę negacją
Ignoruj wszystkie logi oprócz jednego
*.log
!keep-me.log
Pierwsza linia ignoruje każdy plik .log. Reguła !keep-me.log przywraca potem ten jeden konkretny plik. Negacje działają tylko dla plików, które wcześniejsza reguła faktycznie zignorowała: nie przywrócisz pliku w zignorowanym folderze.
Częste błędy z .gitignore
Dodawanie .gitignore po fakcie i oczekiwanie, że scommitowane pliki znikną. Nie znikną: musisz wykonać git rm -r --cached <path>, aby przestać je śledzić.
Jednorazowy commit pliku .env. Nawet jeden commit zostawia sekret na zawsze w historii repozytorium. Dodaj .env* do .gitignore **przed** pierwszym commitem, a każdy sekret, który się prześlizgnął, wymień na nowy.
Zapominanie o śmieciach specyficznych dla systemu we wspólnych repozytoriach. Jeśli choć jedna osoba z zespołu pracuje na macOS, a repozytorium nie ma reguły dla .DS_Store, te pliki pojawią się w diffie każdego PR i spowolnią przegląd.
Próba przywrócenia pliku w zignorowanym folderze. Gdy zignorujesz build/, żadna negacja nie przywróci build/keep.txt, bo Git nawet nie zajrzy do folderu. Zmień strukturę albo przenieś plik.
Dodawanie do projektowego .gitignore konfiguracji edytorów, których używasz tylko ty. Sam korzystasz z JetBrains w zespole na VS Code? Umieść .idea/ w **globalnym** ~/.gitignore_global.
.gitignore generator: FAQ
Skąd pochodzą te szablony .gitignore?
Szablony są skróconymi wersjami z otwartoźródłowego projektu github/gitignore, tego samego źródła, z którego korzysta GitHub, gdy przy tworzeniu repozytorium zaznaczasz "add .gitignore". Każdy z nich przycięliśmy do reguł, których zespoły naprawdę potrzebują, i pogrupowaliśmy według kategorii.
Czy commitować sam plik .gitignore?
Tak. .gitignore ma być w systemie kontroli wersji i współdzielony z zespołem. To *umowa* o tym, co powinno, a co nie powinno być śledzone. Wyjątkiem są osobiste preferencje (np. twój ulubiony edytor): te należą do globalnego ~/.gitignore_global.
Jak przestać śledzić plik, który został już scommitowany?
Najpierw dodaj go do .gitignore, potem uruchom git rm --cached <path> (albo git rm -r --cached <folder>), aby usunąć go z indeksu bez kasowania z dysku. Scommituj obie zmiany razem, żeby zespół zobaczył aktualizację.
Czy w jednym repozytorium może być kilka plików .gitignore?
Tak. Git szuka .gitignore w każdym katalogu i stosuje reguły do tego poddrzewa. To przydatne w monorepo, gdzie frontend i backend mają bardzo różne reguły: w katalogu głównym trzymaj wspólne reguły dla systemu i edytorów, a reguły językowe w katalogu każdego pakietu.
Czym różni się .gitignore od .git/info/exclude?
.gitignore jest commitowany i współdzielony z zespołem. .git/info/exclude istnieje tylko w twoim lokalnym klonie i służy do osobistych wykluczeń, których nie chcesz wypychać. Do wykluczeń we wszystkich twoich repozytoriach użyj globalnego ~/.gitignore_global.