binund bin/unterscheiden sich nur darin, dass letztere nur mit einem Verzeichnis übereinstimmen.
bin/**/*ist das gleiche wie bin/**(anscheinend seit 1.8.2, gemäß der Antwort von @ VonC).
Das Knifflige, dass ich gerade eine Stunde damit verbracht habe, mir die Haare auszureißen, ist das bin/und bin/**ist nicht ganz dasselbe! Da der frühere das Verzeichnis als Ganzes ignoriert und der letztere jede der darin enthaltenen Dateien ignoriert und git in fast allen Fällen keine Verzeichnisse interessiert, gibt es normalerweise keinen Unterschied. Wenn Sie jedoch versuchen !, einen Unterpfad zu ignorieren, werden Sie feststellen, dass git (ahem) ihn ignoriert , wenn Sie das übergeordnete Verzeichnis ignoriert haben! (wieder eher als der Verzeichnisinhalt)
Dies wird am Beispiel am deutlichsten. Für ein neu initiiertes Repository, das wie folgt eingerichtet ist:
$ 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
Die folgenden nicht verfolgten Dateien existieren:
$ git ls-files --other
.gitignore
dir-contents/can-reinclude
dir-only/cant-reinclude
file
ignored-file
or-dir/ignored-file
Sie können jedoch sehen, dass die folgenden Dateien nicht ignoriert werden:
$ git ls-files --other --exclude-standard
.gitignore
dir-contents/can-reinclude
file
Und wenn Sie versuchen hinzuzufügen, erhalten Sie:
$ 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
Ich halte dieses Verhalten für einen Fehler. (Das ist alles an git version 1.8.4.msysgit.0)