.gitignore w Git

1. Wprowadzenie

.gitignore to plik określający, które pliki i katalogi Git ma ignorować (nie śledzić).

Po co ignorować pliki?

  • Pliki tymczasowe (logi, cache)
  • Zależności (node_modules/, vendor/)
  • Pliki konfiguracyjne z hasłami (.env)
  • Pliki IDE (.vscode/, .idea/)
  • Pliki systemowe (.DS_Store)

2. Tworzenie .gitignore


3. Składnia .gitignore

3.1. Podstawowe wzorce

# Ignoruj konkretny plik
sekret.txt

# Ignoruj wszystkie pliki .log
*.log

# Ignoruj katalog
node_modules/

# Ignoruj pliki w katalogu
logs/*.log

# Ignoruj wszystkie pliki .txt w głównym katalogu (nie w podkatalogach)
/*.txt

# Ignoruj wszystkie pliki .txt wszędzie
**/*.txt

3.2. Komentarze

# To jest komentarz
*.log  # Ignoruj logi

3.3. Negacja (NIE ignoruj)

# Ignoruj wszystkie .log
*.log

# Ale NIE ignoruj important.log
!important.log

4. Przykłady .gitignore

4.1. Node.js

node_modules/
npm-debug.log
.env
dist/
build/

4.2. Python

__pycache__/
*.pyc
*.pyo
venv/
.env
*.egg-info/

4.3. PHP

vendor/
composer.lock
.env
*.log

4.4. Java

*.class
*.jar
target/
.idea/

4.5. Uniwersalny

# IDE
.vscode/
.idea/
*.swp

# Systemy
.DS_Store
Thumbs.db

# Logi
*.log

# Env
.env
.env.local

5. Szablony .gitignore

GitHub oferuje gotowe szablony: github.com/github/gitignore

Przykład:


6. Ignorowanie już śledzionych plików

Problem:

Jeśli plik był już dodany do Git, .gitignore go nie zignoruje.

Rozwiązanie:


7. Globalny .gitignore

Ignoruj pliki we wszystkich projektach:

Przykład ~/.gitignore_global:

# IDE
.vscode/
.idea/
*.swp

# Systemy
.DS_Store
Thumbs.db

8. .git/info/exclude

Lokalne ignorowanie (nie commitowane):

Użycie: Pliki specyficzne dla Twojej maszyny.


9. Sprawdzanie ignorowanych plików

9.1. Lista ignorowanych

9.2. Sprawdź, czy plik jest ignorowany

Output:

.gitignore:3:*.txt    plik.txt

10. Praktyczne przykłady

10.1. Projekt Node.js

# Dependencies
node_modules/
package-lock.json

# Environment
.env
.env.local
.env.*.local

# Logs
npm-debug.log*
yarn-debug.log*
yarn-error.log*

# Editor
.vscode/
.idea/
*.sublime-project
*.sublime-workspace

# OS
.DS_Store
Thumbs.db

# Build
dist/
build/

10.2. Projekt Python/Django

# Python
__pycache__/
*.py[cod]
*$py.class
*.so
.Python

# Django
*.log
db.sqlite3
media/
staticfiles/

# Virtual env
venv/
env/
ENV/

# IDE
.vscode/
.idea/
*.swp

# Env
.env

11. Częste błędy

Błąd 1: Plik już śle dzony

Błąd 2: Przypadkowy commit .env


12. Najlepsze praktyki

✅ Dobrze:

  • Dodaj .gitignore na początku projektu
  • Ignoruj pliki z hasłami (.env)
  • Ignoruj zależności (node_modules/)
  • Używaj szablonów GitHub

❌ Źle:

  • Commitowanie node_modules/
  • Commitowanie .env z hasłami
  • Brak .gitignore

13. Cheatsheet

Wzorzec Opis
plik.txt Ignoruj plik.txt
*.log Wszystkie .log
folder/ Ignoruj katalog
**/folder/ Katalog wszędzie
!important.log NIE ignoruj
/*.txt Tylko w głównym katalogu

14. Podsumowanie

.gitignore to must-have w każdym projekcie:

  • ✅ Chroni przed commitowaniem wrażliwych danych
  • ✅ Zmniejsza rozmiar repozytorium
  • ✅ Eliminuje niepotrzebne pliki

Workflow:

Co dalej:

  • Lekcja 9 – Stash
  • Lekcja 10 – Zaawansowane operacje

Świetnie! Umiesz używać .gitignore! 🙈