guide

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

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.

PolaCocokTidak cocok
debug.logdebug.log, logs/debug.log
/debug.logdebug.loglogs/debug.log
logs/debug.loglogs/debug.logapp/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: *, ?, [ ]

Dua bintang **

** hanya bermakna khusus ketika menempel pada garis miring.

BentukArtiContoh
**/foofoo di kedalaman mana punfoo, a/foo, a/b/foo
**/logs/debug.loglogs/debug.log di kedalaman mana punlogs/debug.log, app/logs/debug.log
abc/**semua isi abcabc/x, abc/x/y (tetapi bukan abc itu sendiri)
a/**/bnol direktori atau lebih di antaranyaa/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
JalurHasilAturan penentu
build/app.jsDiabaikan/build/
src/build/app.jsDilacakTidak ada
logs/server.logDiabaikan*.log
logs/important.logDilacak!important.log
docs/api/v1.pdfDiabaikandocs/**/*.pdf
#scratch.mdDiabaikan\#scratch.md

Tabel ini bisa direproduksi persis dengan menempelkan aturan dan jalur ke tab Uji pola di generator.

Referensi

← SebelumnyaApa yang diabaikan dan apa yang di-commit