.gitignore не понимает подкаталог моей папки в окнах

У меня возникла странная проблема с .gitignore в Windows.

Я хочу, чтобы git игнорировал все файлы .exe, кроме тех, что находятся в папке Dependencies (и всех подпапках).

Итак, у меня есть:

.gitignore:

*.exe
!/Dependencies/**/*.exe

Это, к сожалению, не работает.

Между тем, это делает:

*.exe
!/Dependencies/folder/subfolder/*.exe

Так что мне интересно, я что-то испортил или это какая-то ошибка?

Я запускаю msysgit в Windows (Windows 7 x64) версии 1.6.5.1-preview20091022

Заранее благодарим за любой ввод:)

Ответ 1

Поскольку git 1.8.2 (8 марта 2013 г.), теперь поддерживается **:

Образцы .gitignore и .gitattributes файлов могут иметь **/, как шаблон, который соответствует 0 или более уровням подкаталога.

например. "foo/**/bar" соответствует "bar" в "foo" или в подкаталоге "foo".

В вашем случае это означает, что теперь эта строка может поддерживаться:

!/Dependencies/**/*.exe

Ответ 2

.gitignore документация говорит:

git рассматривает шаблон как оболочку оболочки, подходящую для использования fnmatch (3) с флагом FNM_PATHNAME

Возможно, что fnmatch на вашей платформе не поддерживает ** в пути.

Ответ 3

Вы можете добавить файл .gitignore в папку Dependencies с помощью

*. Ехе

внутри. Очевидным недостатком является то, что игнорирование спецификаций теперь разбросано среди нескольких файлов.