bin
e bin/
differiscono solo per il fatto che quest'ultimo corrisponderà solo a una directory.
bin/**/*
è lo stesso di bin/**
(apparentemente dalla 1.8.2, secondo la risposta di @ VonC).
Quello complicato, su cui ho passato circa un'ora a strapparmi i capelli, è questo bin/
e bin/**
non sono proprio la stessa cosa! Poiché il primo ignora la directory nel suo insieme e il secondo ignora ciascuno dei file al suo interno, e git in quasi tutti i casi non si preoccupa delle directory, normalmente non c'è differenza. Tuttavia, se provi a utilizzare !
per non ignorare un sottopercorso, scoprirai che git (ahem) lo ignora se hai ignorato la directory principale! (di nuovo, piuttosto che il contenuto della directory)
Questo è più chiaro dall'esempio, quindi per un repository appena avviato impostato in modo:
$ 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
Esistono i seguenti file non tracciati:
$ git ls-files --other
.gitignore
dir-contents/can-reinclude
dir-only/cant-reinclude
file
ignored-file
or-dir/ignored-file
Ma puoi vedere che i seguenti file non vengono ignorati:
$ git ls-files --other --exclude-standard
.gitignore
dir-contents/can-reinclude
file
E se provi ad aggiungere, ottieni:
$ 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
Considero questo comportamento un bug. (Questo è tutto su git version 1.8.4.msysgit.0
)