Ответ 1
Вы пробовали подстановочные знаки?
Solution/*/bin/Debug
Solution/*/bin/Release
С версией 1.8.2 из git вы также можете использовать подстановочный знак **
для соответствия любому уровню подкаталогов:
**/bin/Debug/
**/bin/Release/
У меня много проектов в моем решении .Net. Я хотел бы исключить все папки "bin/Debug" и "bin/Release" (и их содержимое), но все равно включать в себя папку "bin" и любую DLL, содержащуюся в ней.
.gitignore с "bin/" игнорирует папки "Отладка" и "Отпустить", а также любую DLL, содержащуюся в папке "bin".
"bin/Debug" или "bin/Release" в файле .gitignore не исключает каталоги, если я не полностью квалифицирую шаблон игнорирования как "Solution/Project/bin/Debug" - который я не хочу сделать так, как мне нужно будет включить этот полный шаблон для каждого проекта в моем решении, а также добавить его для добавления любых новых проектов.
Любые предложения?
Вы пробовали подстановочные знаки?
Solution/*/bin/Debug
Solution/*/bin/Release
С версией 1.8.2 из git вы также можете использовать подстановочный знак **
для соответствия любому уровню подкаталогов:
**/bin/Debug/
**/bin/Release/
Вы можете использовать .gitignore на верхнем уровне, чтобы игнорировать все каталоги в проекте с тем же именем. Например:
Debug/
Release/
Это должно немедленно обновиться, чтобы оно отображалось, когда вы выполняете git статус. Убедитесь, что эти каталоги еще не добавлены в git, поскольку это будет отменять игнорирование.
Вопрос не в том, чтобы игнорировать все подкаталоги, но я не мог найти ответ нигде, поэтому я опубликую его: */*
.
Все приведенные выше ответы действительны, но упоминается, что я не думаю, что после того, как вы добавите файл из этого каталога в репо, вы не можете игнорировать этот каталог/подкаталог, содержащий этот файл (git будет игнорировать эту директиву). Вам придется сначала удалить все файлы из целевого каталога из репо, а затем вы можете игнорировать эту папку.
Помимо ввода правильных записей в ваш файл .gitignore, если вы пытаетесь игнорировать что-то, уже добавленное в репо, вы должны сделать git rm -r /path/to/dir
и зафиксировать это, прежде чем добавлять каталог в файл .gitignore, В противном случае игнорируется только git - это ваша директива ignore.
Единственный способ заставить меня работать на моей машине - это сделать так:
# Ignore all directories, and all sub-directories, and it contents:
*/*
#Now ignore all files in the current directory
#(This fails to ignore files without a ".", for example
#'file.txt' works, but
#'file' doesn't):
*.*
#Only Include these specific directories and subdirectories:
!wordpress/
!wordpress/*/
!wordpress/*/wp-content/
!wordpress/*/wp-content/themes/
!wordpress/*/wp-content/themes/*
!wordpress/*/wp-content/themes/*/*
!wordpress/*/wp-content/themes/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*
!wordpress/*/wp-content/themes/*/*/*/*/*
Обратите внимание, что вы должны явно разрешать контент для каждого уровня, который хотите включить. Так что, если у меня есть поддиректории 5 в глубине под темами, мне все равно нужно написать это.
Это комментарий от @Yarin здесь: fooobar.com/questions/11138/...
Это были полезные темы:
Я также пробовал
*
*/*
**/**
и **/wp-content/themes/**
или /wp-content/themes/**/*
Ничто из этого не сработало для меня. Много следов и ошибок!
Общий способ игнорировать все вложенные папки, продолжая отслеживать файлы, находящиеся в каталоге /bin
, заключается в добавлении следующей строки в ваш проект .gitignore file:
bin/*/*
Если вы хотите игнорировать только определенные именованные подпапки, вы можете сделать:
bin/Debug/*
bin/Release/*
пь. если каталог bin
не находится в корне вашего проекта (рядом с файлом .gitignore), то вместо, например,. bin/*/*
вам может понадобиться path/to/bin/*/*
Чтобы игнорировать все подкаталоги, вы можете просто использовать:
**/
Это работает с версией 1.8.2 git.
Мне нужно было внести изменения, внесенные в каталог dirname/
. Теперь добавив dirname/
в .gitignore
, каталог dirname
теперь игнорируется.