Git игнорировать все, кроме подпапки - PullRequest
7 голосов
/ 09 августа 2011

Я искал другие вопросы, но не могу найти рабочее решение для своего проекта. Имея проект Magento, я хочу исключить все, кроме этого:

/app/design/frontend/default/theme_name # and obviously all subfolders
/skin/frontend/default/theme_name # and all subfolders

Я перепробовал много комбинаций, но без удачи. В настоящее время я застрял с этим файлом .gitignore:

*
!/app/
!/app/*

app/*
!/app/design/
!/app/design/*

Но это не работает рекурсивно ниже папки дизайна. Он только добавил тестовый файл в созданную мной папку дизайна.

Ответы [ 3 ]

5 голосов
/ 09 августа 2011

Посмотрите на мой ответ здесь: Не могу понять, как gitignore игнорирует папки

Цитируя это:

Следующее обсуждение было полезно: http://git.661346.n2.nabble.com/negated-list-in-gitignore-no-fun-td1675067.html, особенно следующее от Линуса:

Это по замыслу.Вы решили игнорировать эти каталоги;они соответствуют "*" сами.Таким образом, «мерзавец добавить».не спускается в них в поисках файлов.

Таким образом, в основном, для каждого уровня вы должны входить, игнорировать эту папку и игнорировать содержимое в этой папке.

Кроме того, вам следует обратить внимание на наличие .gitignore в подкаталоге, а не на корневом уровне, поскольку это становится довольно сложным, если вам нужно перейти на уровень подкаталогов от корня .gitignore из-за объяснения выше, причем для каждого уровняВы должны игнорировать папку, а затем игнорировать ее содержимое и т. д.

5 голосов
/ 09 августа 2011

Провел некоторое исследование здесь. То, что сработало для меня, было:

/*
!/directory
!/another
/another/*
!/another/directory

При этом подкаталоги /directory отслеживались правильно. Любопытно, что он не работает только с / или только * в первой строке - я не уверен почему.

0 голосов
/ 04 января 2018
/**
!/**/
!/app/design/frontend/default/theme_name/**
!/skin/frontend/default/theme_name/**

Объяснение:

  1. рекурсивно игнорировать все файлы и папки (обратите внимание на двойную звездочку).
  2. рекурсивно исключать все папки (git по конструкции не будет фиксировать пустой)папки, в которых папка, заполненная игнорируемыми файлами, считается. Нам нужно это, чтобы следующие две исключали работу)
  3. исключает все файлы и папки, рекурсивно, из этого расположения.
  4. исключает всефайлы и папки, рекурсивно, из этого места.

Обычно я делаю это для подпапок, поэтому не знаю, будет ли работать первая строка.

...