bini bin/różnią się tylko tym, że ten ostatni będzie pasował tylko do katalogu.
bin/**/*jest taki sam jak bin/**(najwyraźniej od 1.8.2, zgodnie z odpowiedzią @ VonC).
Trudne jeden, że ja właśnie spędziliśmy godzinę albo tak zgrywania moich włosów na to, że bin/i bin/**nie są zupełnie takie same! Ponieważ wcześniejszy ignoruje katalog jako całość, a drugi ignoruje każdy z plików w nim zawartych, a git w prawie wszystkich przypadkach nie dba o katalogi, zwykle nie ma różnicy. Jeśli jednak spróbujesz użyć !do cofnięcia ignorowania ścieżki podrzędnej, zauważysz, że git (ahem) zignoruje ją, jeśli zignorowałeś katalog nadrzędny! (znowu zamiast zawartości katalogu)
Jest to najlepiej widoczne na przykładzie, więc dla nowo zainicjowanego repozytorium skonfiguruj:
$ 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
Istnieją następujące nieśledzone pliki:
$ git ls-files --other
.gitignore
dir-contents/can-reinclude
dir-only/cant-reinclude
file
ignored-file
or-dir/ignored-file
Ale możesz zobaczyć, że następujące pliki nie są ignorowane:
$ git ls-files --other --exclude-standard
.gitignore
dir-contents/can-reinclude
file
A jeśli spróbujesz dodać, otrzymasz:
$ 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
Uważam to zachowanie za błąd. (To wszystko jest włączone git version 1.8.4.msysgit.0)