В Git игнорировать вложенные папки
У меня есть много проектов в моем решении .Net. Я хотел бы исключить все папки" bin/Debug "и" bin/Release "(и их содержимое), но по-прежнему включать саму папку" bin " и любые содержащиеся в ней dll.
.gitignore с" bin/ "игнорирует папки" Debug "и" Release", а также любые dll, содержащиеся в папке" bin".
" bin / Debug "или" bin/Release " в поле .файл gitignore не исключает каталоги, если я полностью не квалифицирую шаблон ignore как "Solution/Project/bin / Debug" - что я не хочу делать, так как мне нужно будет включить этот полный шаблон для каждого проекта в мое решение, а также добавить его для любых новых добавленных проектов.
какие предложения?
9 ответов:
вы пробовали маски?
Solution/*/bin/Debug Solution/*/bin/Release
С версией 1.8.2 git, вы также можете использовать
**
подстановочный знак для соответствия любому уровню подкаталогов:**/bin/Debug/ **/bin/Release/
вы можете использовать .gitignore на верхнем уровне, чтобы игнорировать все каталоги в проекте с тем же именем. Например:
Debug/ Release/
Это должно немедленно обновиться, чтобы оно было видно, когда вы делаете статус git. Убедитесь, что эти каталоги еще не добавлены в git, так как это переопределит игнорирование.
вопрос не спрашивает об игнорировании всех подкаталогов, но я не мог найти ответ нигде, поэтому я опубликую его:
*/*
.
все вышеперечисленные ответы действительны, но я не думаю, что упоминается, что как только вы добавите файл из этого каталога в репо, вы не можете игнорировать этот каталог/подкаталог, содержащий этот файл (git будет игнорировать эту директиву). Сначала вам нужно будет удалить все файлы из целевого каталога из РЕПО, а затем вы можете игнорировать эту папку.
кроме того, положить правильные записи в вашем .gitignore file, если вы пытаетесь игнорировать что-то уже добавленное в репо, вы должны сделать
git rm -r /path/to/dir
и зафиксируйте это, прежде чем добавить dir к вашему.файла.gitignore В противном случае единственное, что git будет игнорировать, - это ваша директива игнорировать.
единственный способ, которым я получил это, чтобы работать на моей машине было сделать это таким образом:
# Ignore all directories, and all sub-directories, and it's 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/
обратите внимание, как вы должны явно разрешить содержание для каждого уровня, который вы хотите включить. Поэтому, если у меня есть подкаталоги 5 глубоко под темами, мне все равно нужно это объяснить.
это из комментария @Yarin здесь:https://stackoverflow.com/a/5250314/1696153
Это были полезные темы:
- как работают отрицаемые шаблоны .гитюдного?
- как на самом деле работают правила исключения gitignore?
Я тоже пробовал
* */* **/**
и
**/wp-content/themes/**
или
/wp-content/themes/**/*
ничего из этого не сработало и для меня. Много следов и ошибок!
чтобы игнорировать все подкаталоги, вы можете просто использовать:
**/
это работает с версии 1.8.2 git.
универсальный способ игнорировать все подпапки, продолжая отслеживать файлы, которые находятся в
/bin
каталог будет добавить следующую строку в ваш проект .файл пример:bin/*/*
если вы хотите игнорировать только определенные именованные подпапки, вы можете сделать:
bin/Debug/* bin/Release/*
nb. если
bin
каталог не находится в корне вашего проекта (рядом .gitignore file), то вместо например.bin/*/*
вам понадобитсяpath/to/bin/*/*