gitgitignoreMenengah3 mnt baca

.gitignore: File yang Tidak Perlu Dilacak

Cara menulis pola .gitignore, daftar file yang wajib diabaikan, dan menangani file yang telanjur ter-commit.

Kenapa tidak semua file perlu dilacak?

Tidak semua isi folder proyek pantas masuk Git. Contohnya:

  • node_modules/: ribuan file library yang bisa di-install ulang dengan npm install
  • .env: berisi password dan API key yang rahasia
  • Folder dist/ atau build/: hasil kompilasi yang dibuat ulang setiap kali build
  • .DS_Store, Thumbs.db: file sampah buatan sistem operasi

Memasukkan ini ke Git bikin repository bengkak, lambat, dan berbahaya (API key bocor ke GitHub berarti akunmu bisa disalahgunakan orang).

Cara kerja .gitignore

Buat file bernama .gitignore di root proyek. Setiap baris adalah pola file atau folder yang akan diabaikan Git:

bash
# contoh isi .gitignore untuk proyek Node.js
node_modules/
.env
dist/
*.log
.DS_Store

Artinya:

  • node_modules/: abaikan seluruh folder (garis miring di akhir = folder)
  • .env: abaikan file persis bernama itu
  • *.log: abaikan semua file berakhiran .log (tanda * = wildcard)
  • Baris diawali # adalah komentar

Pola lanjutan yang berguna:

bash
# abaikan semua file .tmp di mana pun
**/*.tmp

# kecuali satu file spesifik (tanda ! = pengecualian)
*.log
!important.log

Kapan dipakai? Di awal proyek, sebelum commit pertama kalau bisa. Semakin cepat .gitignore dipasang, semakin kecil risiko file rahasia telanjur masuk riwayat.

Jangan tulis dari nol: pakai template

GitHub menyediakan template .gitignore siap pakai untuk ratusan bahasa dan framework. Saat membuat repository baru di GitHub, ada opsi "Add .gitignore" dengan pilihan template (Node, Python, Laravel, Flutter, dan sebagainya).

Untuk proyek yang sudah jalan tanpa .gitignore, tambahkan file-nya sekarang lalu commit seperti file biasa:

bash
git add .gitignore
git commit -m "Tambah .gitignore"

File yang telanjur ter-commit

Jebakan umum: .gitignore tidak berlaku untuk file yang sudah dilacak Git. Kalau node_modules telanjur ke-commit sebelum .gitignore dipasang, ia tetap terlacak. Solusinya: berhenti melacak tanpa menghapus file lokal:

bash
# berhenti lacak folder tapi file lokal tetap ada
git rm -r --cached node_modules/

# berhenti lacak satu file
git rm --cached .env

# lalu commit perubahan ini
git commit -m "Berhenti lacak node_modules dan .env"

Flag --cached artinya "hapus dari Git saja, jangan hapus file aslinya di komputerku". Tanpa flag itu, file lokalmu ikut terhapus.

Cek apakah pola bekerja

bash
# lihat file apa saja yang diabaikan dan oleh pola mana
git status --ignored

# cek satu file spesifik: kenapa diabaikan?
git check-ignore -v .env
bash
.gitignore:2:.env  .env

Output itu artinya file .env diabaikan oleh pola di baris 2 file .gitignore. Berguna saat kamu bingung kenapa file tidak muncul di git status.

Catatan teknis: Kalau API key telanjur ter-push ke GitHub, sekadar menghapus file di commit berikutnya tidak cukup: key itu tetap ada di riwayat dan bisa dilihat siapa pun. Langkah yang benar: (1) segera cabut/ganti key tersebut di layanan terkait, (2) baru bersihkan riwayat dengan tool seperti git filter-repo atau BFG. Urutannya penting: amankan dulu aksesnya, baru bereskan riwayatnya.

Ringkasan

Pasang .gitignore sejak awal proyek, pakai template GitHub, dan pastikan .env serta folder dependency tidak pernah masuk. Kalau ada yang telanjur, pakai git rm --cached. Satu file kecil ini menyelamatkanmu dari repository bengkak dan kebocoran rahasia.