K

Command Palette

Search for a command to run...

Daftar

Abaikan File di Git (.gitignore)

Jaga repositori Git-mu tetap bersih! Pelajari cara menggunakan file `.gitignore` untuk memberitahu Git agar mengabaikan file atau folder tertentu yang tidak perlu dilacak (misalnya, file hasil build, dependensi, atau file konfigurasi sensitif).

Jaga Repomu Tetap Rapi: Ngasih Tau Git Mana yang Harus Diabaikan Pake .gitignore!

Pas kamu kerja di proyek, gak semua file atau folder di dalem direktori proyekmu itu perlu atau bahkan boleh dilacak sama Git dan dimasukin ke histori commit. Misalnya:

  • File hasil kompilasi atau build: Kayak folder dist/, build/, atau file .o, .class. Ini bisa di-generate ulang dari kode sumber.
  • Folder dependensi/package: Kayak folder node_modules/ (buat proyek JavaScript), vendor/ (buat proyek PHP/Composer), venv/ (buat proyek Python). Ini isinya library pihak ketiga yang ukurannya bisa gede banget dan bisa diinstal ulang pake package manager.
  • File log: Yang isinya catatan aktivitas program dan bisa berubah terus-terusan.
  • File konfigurasi sistem operasi atau editor: Kayak .DS_Store (macOS), Thumbs.db (Windows), folder .vscode/ (settingan VS Code spesifik workspace).
  • File yang isinya data sensitif: Kayak file .env yang nyimpen API key atau password database. INI GAK BOLEH BANGET MASUK REPOSITORI PUBLIK!

Kalau file-file kayak gini ikut ke-add dan ke-commit, repositorimu bisa jadi "gendut" gak perlu, histori jadi rame sama perubahan yang gak relevan, dan yang paling parah, data sensitifmu bisa bocor!

Nah, untungnya Git punya cara buat ngasih tau dia, "Hei Git, file atau folder yang polanya kayak gini tolong diabaikan ya, jangan dilacak!" Caranya adalah dengan bikin file spesial yang namanya .gitignore.

Apa Itu File .gitignore?

File .gitignore (iya, namanya diawali titik, nandain dia file tersembunyi di sistem Unix-like) adalah file teks biasa tempat kamu nulis pola-pola (patterns) nama file atau folder yang mau kamu suruh Git buat abaikan.

  • File ini biasanya ditaruh di direktori root (paling atas) dari repositori Git-mu.
  • Kamu bisa juga punya file .gitignore di sub-folder kalau mau ngatur pengabaian yang lebih spesifik buat sub-folder itu, tapi yang di root paling umum.
  • Aturan di .gitignore bakal dibaca Git setiap kali dia ngecek status file (misal, pas git status atau git add .). File atau folder yang cocok sama pola di .gitignore gak bakal muncul sebagai "Untracked files" dan gak bakal ikut ke-add kalau kamu pake git add . atau git add -A.
  • PENTING: File .gitignore ini harus di-add dan di-commit ke repositorimu juga, biar settingan pengabaian ini juga berlaku buat semua orang yang nge-clone atau kerja bareng di proyekmu.

Sintaks Dasar Penulisan Pola di .gitignore

Nulis pola di .gitignore itu gampang, ini aturan dasarnya:

  1. Baris Kosong atau Baris Diawali # (Komentar):

    • Baris yang kosong bakal diabaikan.
    • Baris yang diawali tanda pagar (#) dianggap sebagai komentar dan juga diabaikan. Pake ini buat ngasih penjelasan ke polamu.
    gitignore
    # Ini adalah komentar
     
    # Baris kosong di atas dan di bawah ini diabaikan
  2. Nama File atau Folder Langsung:

    • Kamu bisa nulis nama file atau folder secara spesifik.

    • Contoh:

      gitignore
      kunci_rahasia.txt  # Abaikan file kunci_rahasia.txt di mana pun
      log_aplikasi.log
      output_build/      # Abaikan folder output_build/ dan semua isinya
    • Kalau nama diakhiri slash (/), itu artinya Git bakal nganggapnya sebagai folder. Jadi, output_build/ bakal ngabaikan folder output_build dan semua isinya. Kalau cuma output_build (tanpa slash), dia bisa ngabaikan file ATAU folder yang namanya output_build. Pake slash lebih eksplisit buat folder.

  3. Wildcard (* dan ?):

    • * (asterisk/bintang): Cocok sama nol atau lebih karakter apa pun (kecuali slash / kalau gak di awal path).

    • ?: Cocok sama satu karakter apa pun (kecuali slash /).

    • []: Cocok sama salah satu karakter di dalem kurung siku. Misal, [abc] cocok sama a, b, atau c. [0-9] cocok sama angka 0 sampe 9.

    • Contoh:

      gitignore
      *.log       # Abaikan semua file yang akhirannya .log (misal, app.log, error.log)
      *.tmp       # Abaikan semua file .tmp
      build*      # Abaikan semua file atau folder yang namanya diawali "build"
      data?.csv   # Abaikan data1.csv, dataX.csv, tapi gak data10.csv
      image[1-3].png # Abaikan image1.png, image2.png, image3.png
  4. Pola Direktori:

    • Kalau pola diawali slash (/), artinya path itu relatif terhadap direktori root repositori tempat file .gitignore itu berada.

    • Kalau gak diawali slash, polanya bisa cocok di direktori mana aja di dalem repo.

    • Kalau pola diakhiri slash (/), itu cuma bakal cocok sama direktori.

    • **/: Cocok sama nol atau lebih direktori (rekursif ke sub-sub direktori).

    • Contoh:

      gitignore
      /debug.log      # Abaikan debug.log yang ada di root repo aja
      docs/temp/      # Abaikan folder temp/ yang ada di dalem folder docs/
      **/cache/       # Abaikan semua folder bernama "cache" di mana pun levelnya
      src/**/*.js.map # Abaikan semua file .js.map di dalem folder src dan semua sub-foldernya
  5. Negasi Pola dengan !:

    • Kalau kamu mau ngabaikan semua file dengan pola tertentu, TAPI ada beberapa file spesifik dengan pola itu yang justru mau kamu lacak, kamu bisa pake tanda seru (!) di awal pola.

    • PENTING: Aturan negasi ini cuma bisa "mbatalin" aturan pengabaian dari file .gitignore yang sama atau dari file .gitignore di direktori induk. Dia gak bisa "mbatalin" pengabaian file yang udah diabaikan karena ada di folder yang diabaikan.

    • Contoh:

      gitignore
      # Abaikan semua file .md
      *.md
       
      # TAPI JANGAN abaikan file README.md dan LICENSE.md
      !README.md
      !LICENSE.md
       
      # Abaikan folder logs/
      logs/
      # TAPI JANGAN abaikan file penting.log di dalem logs/
      # (Ini gak bakal jalan sesuai harapan kalau logs/ udah diabaikan.
      #  Kamu harus lebih spesifik, misal abaikan logs/* tapi !logs/penting.log)
      #  Cara yang lebih bener:
      #  logs/*
      #  !logs/penting.log 
      #  !logs/ # Biar folder logs-nya sendiri gak ke-ignore, tapi isinya ke-ignore kecuali yg di-whitelist

    Pola negasi ini kadang agak tricky, jadi tes dulu baik-baik.

Contoh Isi File .gitignore yang Umum

Berikut contoh isi file .gitignore buat proyek web umum (misalnya, yang pake Node.js):

gitignore
# Komentar: Abaikan dependensi Node.js
node_modules/
 
# Komentar: File log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
*.log
 
# Komentar: File konfigurasi environment (sering berisi data sensitif)
.env
.env.local
.env.*.local
!.env.example # Biarin .env.example tetep dilacak buat contoh
 
# Komentar: File sistem operasi
.DS_Store
Thumbs.db
 
# Komentar: Folder hasil build atau distribusi
dist/
build/
out/
public/ # Tergantung proyek, kadang public ini isinya aset yang di-generate
 
# Komentar: File editor atau IDE
.vscode/ # Kecuali kalau mau nyimpen settingan workspace yg dibagi tim
.idea/
 
# Komentar: File sementara atau backup editor
*~
*.swp
*.swo

Kamu bisa cari template .gitignore yang lebih spesifik buat jenis proyek atau bahasa pemrogramanmu di website kayak gitignore.io atau di koleksi .gitignore GitHub.

Apa yang Harus Dilakukan Kalau File Udah Terlanjur Ke-commit?

.gitignore itu cuma ngaruh buat file yang belum pernah dilacak (untracked) atau yang perubahannya belum di-stage. Kalau kamu udah terlanjur nge-add dan nge-commit file yang seharusnya diabaikan (misal, folder node_modules/ atau file .env), nambahin nama file/folder itu ke .gitignore gak bakal otomatis ngilangin dia dari histori Git atau dari repositori remote kalau udah di-push.

Buat ngapus file/folder yang udah terlanjur dilacak dari Git (tapi tetep ada di komputermu), kamu perlu perintah ini (jalanin dari root repo):

bash
git rm --cached <nama_file_atau_folder_yang_mau_dihapus_dari_pelacakan>
# Buat folder, tambahin -r:
# git rm -r --cached <nama_folder>/
  • git rm: Perintah buat ngapus file dari Git.
  • --cached: Opsi ini penting! Dia cuma ngapus file/folder dari pelacakan Git (dari Staging Area dan histori commit berikutnya), tapi file/folder aslinya tetep ada di Working Directory-mu (gak kehapus dari komputermu).
  • Setelah itu, baru tambahin pola file/folder itu ke .gitignore.
  • Terus, git add .gitignore (dan git add . kalau ada file lain yang berubah karena git rm --cached), dan git commit -m "Hapus file X dari pelacakan dan update .gitignore".

Kalau file sensitif udah terlanjur ke-push ke remote (GitHub), prosesnya lebih rumit lagi buat ngilanginnya dari histori. Pencegahan itu lebih baik!


File .gitignore ini "penjaga gerbang" yang penting banget buat ngejaga repositori Git-mu tetep bersih, relevan, dan aman. Biasain buat bikin file .gitignore di awal proyek dan nambahin pola-pola file/folder yang emang gak perlu dilacak.

Ini bakal ngirit space, ngurangin noise di git status, dan yang paling penting, ngelindungin data sensitifmu!


Kuis Mengabaikan File di Git (.gitignore)

Pertanyaan 1 dari 5

Apa nama file khusus yang digunakan oleh Git untuk menentukan file dan folder mana yang harus diabaikan dan tidak dilacak?