Mengapa ! gagal mempertahankan berkas dalam direktori yang diabaikan?

Pengecualian berkas tidak berlaku selama direktori induknya dikecualikan. Periksa aturan direktori sebelum menambah pengecualian.

1. Kenali pola yang gagal

Di akar proyek terdapat dua berkas tidak terlacak: build/keep.txt dan build/discard.txt. Aturan ini mengecualikan build itu sendiri sehingga Git tidak menelusurinya untuk mencari keep.txt. Pengecualian sesudahnya tidak dapat memulihkan berkas itu.

/build/
!/build/keep.txt

2. Abaikan isi, pertahankan satu berkas

Ganti dua aturan sebelumnya dalam .gitignore akar dengan aturan berikut. build tetap dapat ditelusuri, isi langsungnya diabaikan, dan keep.txt disertakan kembali. Untuk pengecualian lebih dalam, setiap direktori induk juga harus dapat ditelusuri.

Pada prioritas sama, aturan cocok terakhir berlaku. Letakkan pengecualian sesudah aturan pengabaian. Periksa juga aturan lain dan .gitignore di subdirektori.

/build/*
!/build/keep.txt

3. Verifikasi kedua berkas

Buat kedua berkas, lalu jalankan perintah dari akar repositori. Hasil terperinci seharusnya menunjukkan !/build/keep.txt untuk keep.txt dan /build/* untuk discard.txt. Aturan dengan ! berarti berkas disertakan kembali, bukan diabaikan.

git check-ignore -v -- build/keep.txt build/discard.txt

Status seharusnya menampilkan build/keep.txt sebagai tidak terlacak dan tidak menampilkan build/discard.txt. Jika sudah dilacak, lihat artikel berkas terlacak; aturan tidak mengubah entri indeksnya.

git status --short --untracked-files=all -- build/

Bagaimana mengabaikan berkas yang sudah dilacak Git?

Untuk perilaku yang tepat dan rincian lebih lanjut, lihat referensi resmi: Dokumentasi Git · Dokumentasi git check-ignore