Komit 59856de dari Karsten Blees (kblees) untuk Git 1.9 / 2.0 (Q1 2014) mengklarifikasi kasus itu:
gitignore.txt
: memperjelas sifat rekursif dari direktori yang dikecualikan
Awalan opsional " !
" yang meniadakan pola; setiap file yang cocok dikecualikan oleh pola sebelumnya akan dimasukkan lagi.
Tidak mungkin untuk memasukkan kembali file jika direktori induk dari file itu dikecualikan. ( *
)
( *
: kecuali kondisi tertentu terpenuhi di git 2.8+, lihat di bawah)
Git tidak mencantumkan direktori yang dikecualikan karena alasan kinerja, sehingga pola apa pun pada file yang terkandung tidak memiliki efek, di mana pun mereka didefinisikan.
Letakkan backslash (" \
") di depan " !
" pertama untuk pola yang dimulai dengan " !
" literal , misalnya, " \!important!.txt
".
Contoh untuk mengecualikan semua kecuali direktori tertentu foo/bar
(perhatikan /*
- tanpa slash, wildcard juga akan mengecualikan semua yang ada di dalamnya foo/bar
):
--------------------------------------------------------------
$ cat .gitignore
# exclude everything except directory foo/bar
/*
!/foo
/foo/*
!/foo/bar
--------------------------------------------------------------
Dalam kasus Anda:
application/*
!application/**/
application/language/*
!application/language/**/
!application/language/gr/**
Anda harus membuat daftar putih folder terlebih dahulu, sebelum dapat membuat daftar putih file dalam folder yang diberikan.
Pembaruan Februari / Maret 2016:
Perhatikan bahwa dengan git 2.9.x / 2.10 (pertengahan 2016?), Dimungkinkan untuk memasukkan kembali file jika direktori induk dari file tersebut dikecualikan jika tidak ada wildcard di jalur yang disertakan kembali .
Nguyễn Thái Ngọc Duy ( pclouds
) sedang mencoba untuk menambahkan fitur ini:
Jadi dengan git 2.9+, ini bisa saja berhasil, tetapi pada akhirnya dikembalikan:
application/
!application/language/gr/
.gitignore
dokumentasi "format pola" menjadi lebih jelas (Desember 2013). Lihat jawaban saya di bawah ini