Git - Игнорировать определенные файлы, содержащиеся в определенных папках

Я использую msysgit и имею дерево проекта, которое содержит много bin/folders в дереве. Используя файл .gitignore в корне проекта, мне нужно игнорировать все DLL файлы, которые находятся внутри корзины/папки в любом месте дерева проекта. Я пробовал "bin/*. Dll", но это не работает, я полагаю, что он работает только с bin/folder в корне проекта.

Ответ 1

У меня была аналогичная проблема и поняли: файлы уже добавлены и отмечены в git.

Как распознать разницу: Git не отображал файлы как "новые", а как "измененные". Эти детали стоили мне довольно долгое время...

Если это проблема, просто "git rm" эти файлы и начните сначала. Внезапно .gitignore начинает работать, как ожидалось.

Ответ 2

У меня есть только /bin в моем файле, и, похоже, он работает. Он игнорирует всю папку (в отличие от определенных файлов в ней)

Вот полное содержание на данный момент (все еще развивается).

.svn*
obj/
bin/
*.suo
*.user
Log/
log/
*.db

Ответ 3

Обновление августа 2016 года (семь лет спустя, Git 2.9.3/Git 2.10)

**/bin/*.dll

Это работает для любой глубины.


Оригинальный ответ (2009, Git 1.6)

Вы пытались:

**/bin/*.dll

Он работает с моим msysgit1.6.3 (с файлом .gitignore в корневом каталоге рабочего пространства Git).

На самом деле вышеизложенное будет игнорировать "x/bin/z.dll", а не "x/y/bin/z.dll".

Другим синтаксисом может быть:

**/*/bin/*.dll

Но это будет только глубина 3, а не глубина 2!

Итак, если у вас слишком много места, где нужно игнорировать *.dll, самым простым решением по-прежнему будет локальный файл .gitignore в этих каталогах "bin"...

Или набор директив для покрытия основных первых глубин:

bin/*.dll
**/bin/*.dll
**/*/bin/*.dll
**/**/*/bin/*.dll

и т.д., все в одном файле .gitignore.

Ответ 4

.gitignore на окнах, похоже, не работает. Я использую msysgit v 1.7.6 beta, и он просто не работает так, как он должен на странице .gitignor man. Теперь, если я скопирую содержимое моего файла .gitignore в файл $GIT_DIR/info/exclude, внутри репо все будет работать.

Итак, облом: это не реплицируется, но лучше, чем ничего.

Ответ 5

*/bin работал у меня

Я бы подумал, что */bin/будет также.