2013-07-09 2 views
5

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

packages/ 
!packages/**/*.targets 

но он не работает.

Как игнорировать эту папку, но не файлы целей?

ответ

0

Хм. Я не думаю, что это возможно с использованием прямых правил .gitignore.

Однако, это должно помочь:

  • .gitignore:

    packages/ 
    
  • добавить шаблоны файлов:

    git add --force -- $(find packages/ -type f -iname '*.targets') 
    

Вы могли даже м ake добавить в крюк pre-commit, чтобы автоматически получать новые файлы целей, когда они появляются.

Чтобы правильно поддерживать имена файлов со специальными символами:

find packages/ -type f -iname '*.targets' -exec git add --force -- {} + 
3

Это, кажется, работает для меня (Git 1.8.2.1):

packages/**/*.* 
!packages/**/*.targets 

мне нужна *.* части, в противном случае ** матчей 0 каталогов , а одиночный * в конце будет соответствовать любому каталогу внутри пакетов, практически игнорируя каждый каталог и любой файл внутри.

Надеюсь, *.* не так уж плохо для вас, но наличие файлов без расширения довольно необычно.

+0

Кажется, что только файлы игнорируются только с одной точкой, поэтому многие мои файлы, содержащие более одной точки, не игнорируются, например: packages/AttributeRouting.3.5.6/AttributeRouting.3.5.6.nupkg – Escobar5

+0

Странно. Я создал этот точный каталог и имя файла в моем тестовом репозитории, и он проигнорировал правильно. Звездочка должна совпадать с точками сама по себе, единственное, что я заставляю иметь, по крайней мере, одну точку, но два следует игнорировать. Какую версию Git вы используете? Какая ОС? (Я использую Mac OS X 10.8.4) – yonosoytu

+0

Возможно, это моя версия, я использую 1.7.11 в Windows, я собираюсь проверить новую версию – Escobar5

Смежные вопросы