В Git игнорировать вложенные папки
У меня много проектов в моем .Net-решении. Я хотел бы исключить все папки" bin/Debug "и" bin/Release "(и их содержимое), но по-прежнему включать саму папку" bin " и любые dll, содержащиеся в ней.
.gitignore с" bin/ "игнорирует папки" Debug "и" Release", а также любые dll, содержащиеся в папке" bin".
" bin / Debug "или" bin/Release " в .файл gitignore не исключает каталогов, если я полностью не квалифицирую шаблон ignore как "Решение / проект/bin / Debug" - что я не хочу делать, так как мне нужно будет включить этот полный шаблон для каждого проекта в мое решение, а также добавить его для любых новых добавленных проектов.
какие предложения?
9 ответов
вы пробовали маски?
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
и зафиксируйте это, прежде чем добавлять 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/Debug/*
bin/Release/*
nb. если bin
каталог не находится в корне вашего проекта (наряду с .gitignore file), то вместо eg. bin/*/*
вам понадобится path/to/bin/*/*
чтобы исключить содержимое и подкаталоги:
**/bin/*
чтобы просто исключить все подкаталоги, но взять содержимое, добавьте "/":
**/bin/*/