.gitignore - to plik używany w systemie kontroli wersji Git do wskazywania plików i katalogów, które powinny być ignorowane przez Git. Oznacza to, że pliki i katalogi wymienione w .gitignore nie będą dodawane do indeksu Git, nie będą śledzone i nie będą trafiały do commitów.
Po co jest .gitignore?
Plik .gitignore pomaga uniknąć dodawania do repozytorium plików, które nie mają związku z kodem lub nie powinny być publiczne. Mogą to być:
- Pliki konfiguracyjne środowiska deweloperskiego.
- Pliki dziennika.
- Pliki generowane (na przykład wyniki kompilacji).
- Pliki tymczasowe (cache, pliki tymczasowe).
- Dane wrażliwe (na przykład hasła lub klucze dostępu).
Przykład użycia .gitignore
Tworzenie pliku .gitignore:
W katalogu głównym twojego repozytorium stwórz plik o nazwie .gitignore.
Dodawanie plików i katalogów do .gitignore:
Do pliku .gitignore dodawaj wzory dla plików i katalogów, które powinny być ignorowane. Na przykład:
# Ignoruj wszystkie pliki .DS_Store
.DS_Store
# Ignoruj pliki dzienników
*.log
# Ignoruj wszystkie pliki w katalogu temp/
temp/
# Ignoruj pliki konfiguracyjne IDE
.idea/
*.iml
Po dodaniu wpisów do .gitignore upewnij się, że te pliki nie zostały jeszcze dodane do indeksu. Jeśli już zostały dodane, usuń je z indeksu za pomocą polecenia git rm --cached <filename> i zrób commit.
Jak działa .gitignore?
- Każdy wiersz w .gitignore reprezentuje wzór dla plików, które powinny być ignorowane.
- Wzory mogą być prostymi nazwami plików lub zawierać znaki wieloznaczne (wildcards) dla większej elastyczności.
- Komentarze mogą być dodawane za pomocą znaku #.
- .gitignore może być umieszczony w dowolnym katalogu repozytorium, a jego działanie będzie ograniczone do tego katalogu i podkatalogów. To przydatne, czasami wręcz bardzo wygodne.
Przy okazji, plik .gitignore nie będzie widoczny w Finderze (tylko w edytorze kodu lub w terminalu wykonując
ls -a). Przeczytaj w poprzednim wpisie
więcej o ukrytych plikach (z kropką na początku).
Przykład pliku .gitignore dla projektu Ruby on Rails
# Ignoruj konfigurację bundlera
/.bundle
# Ignoruj domyślną bazę danych SQLite
/db/*.sqlite3
/db/*.sqlite3-journal
/db/*.sqlite3-shm
/db/*.sqlite3-wal
# Ignoruj domyślne pliki bazy danych PostgreSQL i MySQL
/db/*.pg
/db/*.pg-journal
/db/*.mysql
/db/*.mysql-journal
# Ignoruj wszystkie pliki dzienników i pliki tymczasowe
/log/*
/tmp/*
!/log/.keep
!/tmp/.keep
# Ignoruj przesłane pliki w środowisku deweloperskim
/storage/*
!/storage/.keep
# Ignoruj klucz tajny aplikacji
/config/master.key
# Ignoruj pliki pid, pliki tymczasowe i historię poleceń byebug
/tmp
/tmp/pids
/tmp/cache
/tmp/sockets
/.byebug_history
# Ignoruj pliki zmiennych środowiskowych dotenv
.env
.env.*
# Ignoruj node_modules
/node_modules
/yarn-error.log
# Ignoruj prekompilowane zasoby
/public/assets
/public/packs
/public/packs-test
/public/packs-dev
# Ignoruj skompilowane pliki
/public/assets
/public/packs
/public/packs-test
/public/packs-dev
/public/packs/css
/public/packs/js
/public/packs/images
# Ignoruj wyniki pokrycia generowane przez SimpleCov
/coverage/
# Ignoruj pliki wynikowe minitest i rspec
/test/tmp
/test/version_cache
/spec/tmp
/spec/fixtures/files
/spec/examples.txt
# Ignoruj cache rubocopa
/.rubocop-https*
/.rubocop_cache
# Ignoruj zrzuty ekranu Capybara
/tmp/capybara/
# Ignoruj magazyny Redis
/tmp/redis/
# Ignoruj .DS_Store
.DS_Store
# Ignoruj kopie zapasowe
/backup/
# Ignoruj przesłane pliki ActiveStorage w środowisku deweloperskim
/storage/*
!/storage/.keep
Zazwyczaj plik .gitignore jest uzupełniany dodatkowymi wpisami podczas implementacji nowej funkcjonalności projektu. Na przykład, nowa biblioteka tworzy tymczasowe pliki cache na lokalnej maszynie - więc dodajemy je (lub katalog) do listy ignorowanych. Przed commitem zobaczysz zbędne pliki i łatwo zidentyfikujesz, co dokładnie należy dodać do .gitignore.