Panduan lengkap sintaks pola .gitignore
Komentar, escape dan spasi di akhir baris, negasi !, garis miring di akhir, penjangkaran, wildcard *, ? dan [], serta aturan ** dijelaskan dengan tabel contoh.
Setiap baris .gitignore adalah satu pola. Sintaksnya mirip glob di shell, tetapi maknanya sangat berubah tergantung letak garis miring dan letak **. Isi di bawah mengikuti dokumentasi resmi git, gitignore(5), dan contohnya diperiksa langsung dengan git 2.50.
Baris kosong, komentar, dan escape
- Baris kosong tidak cocok dengan apa pun. Gunakan sebagai pemisah agar mudah dibaca.
- Baris yang diawali
#adalah komentar. Untuk mengabaikan file yang namanya diawali#, tambahkan garis miring terbalik seperti\#. - Spasi di akhir baris diabaikan. Jika butuh nama file yang diakhiri spasi, lindungi spasinya dengan garis miring terbalik seperti
foo\. Spasi di awal baris tetap menjadi bagian pola. - Baris yang diawali
!adalah pola negasi. Untuk file yang namanya diawali!, tulis\!important.txt.
Spasi di akhir baris tidak terlihat dan sering menjadi sumber kesalahan. Jika aturan tidak berlaku, aktifkan tampilan spasi di editor. Ingat juga bahwa hanya karakter spasi yang dihapus; tab tidak.
Garis miring di akhir: hanya direktori
Jika pola diakhiri /, pola itu hanya cocok dengan direktori. build/ mengabaikan direktori build beserta seluruh isinya, tetapi tidak mengabaikan file bernama build. Sebaliknya, build tanpa garis miring cocok dengan file maupun direktori bernama itu.
Garis miring menjangkarkan posisi
Jika sisa pola, di luar garis miring akhir, berisi / di awal atau di tengah, pola hanya cocok dengan jalur relatif terhadap direktori tempat .gitignore berada. Ini sering disebut penjangkaran (anchoring). Tanpa /, git mencari entri bernama sama di kedalaman mana pun di bawah .gitignore.
| Pola | Cocok | Tidak cocok |
|---|---|---|
debug.log | debug.log, logs/debug.log | — |
/debug.log | debug.log | logs/debug.log |
logs/debug.log | logs/debug.log | app/logs/debug.log |
doc/frotz/ | direktori doc/frotz/ | a/doc/frotz/ |
frotz/ | direktori frotz/, a/frotz/ | file frotz |
Baris ketiga paling membingungkan. logs/debug.log punya garis miring di tengah, jadi dijangkarkan ke root dan sama artinya dengan menambahkan / di depan. Untuk menangkap logs/debug.log di kedalaman mana pun, gunakan **/logs/debug.log.
Wildcard: *, ?, [ ]
*cocok dengan string apa pun kecuali/(termasuk string kosong).*.logcocok denganapp.logdana/b/app.log, tetapilogs/*.loghanya cocok denganlogs/app.log, tidak denganlogs/2026/app.log.?cocok dengan satu karakter kecuali/.file?.txtcocok denganfile1.txt, tetapi tidak denganfile10.txt.[a-z]cocok dengan satu karakter dalam rentang, sedangkan[!a-z]atau[^a-z]dengan satu karakter di luar rentang.*.py[cod]menangkap.pyc,.pyo, dan.pydsekaligus. Kurung siku juga tidak cocok dengan/.- Kelas karakter POSIX seperti
[[:digit:]]juga bisa dipakai.
Dua bintang **
** hanya bermakna khusus ketika menempel pada garis miring.
| Bentuk | Arti | Contoh |
|---|---|---|
**/foo | foo di kedalaman mana pun | foo, a/foo, a/b/foo |
**/logs/debug.log | logs/debug.log di kedalaman mana pun | logs/debug.log, app/logs/debug.log |
abc/** | semua isi abc | abc/x, abc/x/y (tetapi bukan abc itu sendiri) |
a/**/b | nol direktori atau lebih di antaranya | a/b, a/x/b, a/x/y/b |
Di posisi lain, misalnya ** pada foo** atau **bar, ia berperilaku seperti * biasa dan tidak melewati garis miring. docs/**/*.pdf cocok dengan docs/manual.pdf dan docs/a/b/manual.pdf, karena /**/ juga cocok dengan nol direktori.
Rangkuman dalam satu contoh kecil
# Hasil build (hanya direktori build di root)
/build/
# File log di kedalaman mana pun, kecuali log penting
*.log
!important.log
# Semua PDF di bawah docs
docs/**/*.pdf
# File yang namanya diawali #
\#scratch.md
| Jalur | Hasil | Aturan penentu |
|---|---|---|
build/app.js | Diabaikan | /build/ |
src/build/app.js | Dilacak | Tidak ada |
logs/server.log | Diabaikan | *.log |
logs/important.log | Dilacak | !important.log |
docs/api/v1.pdf | Diabaikan | docs/**/*.pdf |
#scratch.md | Diabaikan | \#scratch.md |
Tabel ini bisa direproduksi persis dengan menempelkan aturan dan jalur ke tab Uji pola di generator.
Referensi
- Dokumentasi resmi gitignore (git-scm.com)
- GitHub Docs: Ignoring files
- Diperiksa per: 2026-09-23 (contoh diverifikasi dengan git 2.50.1)