guide

Apa yang diabaikan dan apa yang di-commit

Kriteria untuk mengabaikan hasil build, dependensi, cache, dan rahasia serta meng-commit lockfile, contoh konfigurasi, dan pengaturan editor tim, ditambah .gitignore di subdirektori, direktori kosong, dan tips menggabungkan template.

.gitignore yang baik dinilai dari kriterianya, bukan panjangnya. Kriterianya hanya satu: apakah orang yang meng-clone repositori dari awal bisa membuat ulang hasil yang sama hanya dengan kode dan konfigurasi? Yang bisa dibuat ulang diabaikan; yang tidak bisa, atau yang mengunci hasil, di-commit.

Yang diabaikan

JenisContohAlasan
Hasil builddist/, build/, target/, *.o, *.classdibuat ulang dari kode
Hasil instalasi dependensinode_modules/, vendor/ (PHP), .venv/dipasang ulang dari manifes dan lockfile
Cache dan log.cache/, .pytest_cache/, *.log, coverage/berubah setiap kali dijalankan
Lingkungan lokal dan rahasia.env, *.pem, local.properties, *.tfstateberbeda per orang/lingkungan atau tidak boleh bocor
Status alat pribadi.DS_Store, *.swp, .idea/workspace.xmltidak berhubungan dengan proyek (disarankan gitignore global)

Yang di-commit

.gitignore di subdirektori

.gitignore tidak hanya bisa ditaruh di root. .gitignore di subdirektori bekerja dengan direktori itu sebagai dasar dan lebih diutamakan daripada berkas di atasnya. Di monorepo yang tiap paketnya butuh aturan berbeda, menaruh berkas terpisah di tiap folder paket lebih mudah dibaca.

repo/
├── .gitignore          # umum: .DS_Store, .env, coverage/
├── apps/web/.gitignore # .next/, out/
└── services/api/.gitignore # target/

Mempertahankan direktori kosong

git hanya melacak file dan tidak menyimpan direktori kosong. Agar sebuah folder tetap ada tetapi isinya diabaikan, seperti folder log, taruh file penanda di dalamnya lalu sertakan kembali dengan negasi.

/log/*
!/log/.keep

Nama seperti .keep atau .gitkeep bukan fitur resmi git, hanya kebiasaan. Nama apa pun bisa dipakai. Cara lain, taruh .gitignore berisi baris berikut di dalam folder itu; berkas ini mengabaikan semua kecuali dirinya sendiri.

*
!.gitignore

Saat menggabungkan template

Aturan yang pendek dan spesifik

Aturan yang terlalu luas seperti *.json ikut menelan berkas konfigurasi. Persempit jalurnya sebisa mungkin (/dist/) dan akhiri direktori dengan garis miring agar dibedakan dari file bernama sama. Komentar satu baris di atas aturan yang menjelaskan alasannya membantu orang berikutnya memutuskan apakah aturan itu boleh dihapus.

Referensi

← SebelumnyaMengapa diabaikan? Debugging dengan git check-ignore