bindan bin/hanya berbeda dalam hal ini yang terakhir hanya akan cocok dengan direktori.
bin/**/*sama dengan bin/**(tampaknya sejak 1.8.2, menurut jawaban @ VonC).
Yang rumit, bahwa saya hanya menghabiskan satu jam atau lebih merobek rambut saya, adalah itu bin/dan bin/**tidak persis sama! Karena sebelumnya mengabaikan direktori secara keseluruhan, dan yang terakhir mengabaikan setiap file di dalamnya, dan git di hampir semua kasus tidak peduli dengan direktori, biasanya tidak ada perbedaan. Namun, jika Anda mencoba menggunakan !untuk tidak mengabaikan sub jalur, Anda akan mendapati bahwa git (ahem) mengabaikannya jika Anda mengabaikan direktori induk! (sekali lagi, bukan isi direktori)
Ini paling jelas dengan contoh, jadi untuk repositori yang baru diinit, atur begitu:
$ cat .gitignore
ignored-file
or-dir
dir-only/
!dir-only/cant-reinclude
dir-contents/**
!dir-contents/can-reinclude
$ mkdir or-dir dir-only dir-contents
$ touch file ignored-file or-dir/ignored-file dir-only/cant-reinclude dir-contents/can-reinclude
Ada file yang tidak terlacak berikut:
$ git ls-files --other
.gitignore
dir-contents/can-reinclude
dir-only/cant-reinclude
file
ignored-file
or-dir/ignored-file
Tetapi Anda dapat melihat file-file berikut tidak diabaikan:
$ git ls-files --other --exclude-standard
.gitignore
dir-contents/can-reinclude
file
Dan jika Anda mencoba menambahkan, Anda mendapatkan:
$ git add dir-only/cant-reinclude
The following paths are ignored by one of your .gitignore files:
dir-only/cant-reinclude
Use -f if you really want to add them.
fatal: no files added
Saya menganggap perilaku ini sebagai bug. (Ini semua aktif git version 1.8.4.msysgit.0)