Обновление (08-Mar-2016)
Сегодня я не могу найти машину, на которой **
не работает, как заявлено. Сюда входят OSX-10.11.3 (El Capitan) и Ubuntu-14.04.1 (Trusty). Возможно, git-ignore, как было обновлено, или, возможно, недавно fnmatch обрабатывает **
, как ожидают люди. Таким образом, принятый ответ сейчас кажется правильным на практике.
Оригинальный пост
**
не имеет особого значения в git . Это особенность bash> = 4.0, через
shopt -s globstar
Но git не использует bash . Чтобы увидеть, что на самом деле делает git , вы можете поэкспериментировать с git add -nv
и файлами на нескольких уровнях подкаталогов.
Для OP я перепробовал каждую комбинацию для файла .gitignore
, и ничто не работает лучше, чем это:
public/documents/
Следующее не делает того, о чем все думают:
public/documents/**/*.obj
Я не могу заставить это работать независимо от того, что я пытаюсь, но по крайней мере это согласуется с git docs . Я подозреваю, что когда люди добавляют это к .gitignore
, оно работает случайно, только потому, что их .obj
файлы находятся точно в одном подкаталоге. Вероятно, они скопировали двойную звездочку из скрипта bash. Но, возможно, существуют системы, в которых fnmatch(3)
может обрабатывать двойную звездочку как bash.