Git не наблюдает новых исключений.gitignore

[Примечание: это не обычная "мерзавец еще треки, я просто добавил .гитюдного!" проблема. Это противоположность этому.]

у меня есть полная структура каталогов веб-сайта в репозитории Git. CMS, который я использую, поставляется по умолчанию с a .файл пример:

# Ignore paths that contain user-generated content.
sites/*/files/
sites/*/private/

обратите внимание, что все каталоги sites/*/files исключены. Но, как я делаю свои сайты, есть определенная подпапка, которую я хочу включить в репозиторий. Итак, после начала моего РЕПО с выше .gitignore, я изменил его на это:

# Ignore paths that contain user-generated content.
sites/*/files/
!sites/*/files/content/
!sites/*/files/content/*
sites/*/private/

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

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

> git add sites/default/files/content/

и снова:

The following paths are ignored by one of your .gitignore files:
sites/default/files
Use -f if you really want to add them.
fatal: no files added

почему да, Git, что каталог игнорируется на строке 2 .gitignore, но строки 3 и 4 говорят, чтобы сделать исключение для конкретной папки, о которой я вас спрашивал!

Я знаю, что я могу использовать-f, чтобы добавить его напрямую, но тогда я должен делать это снова и снова на любом будущем коммите, который добавляет файлы в этот каталог.

есть страницы все over web что говорить о том, как обновление .gitignore не заставляет Git игнорировать уже отслеженные файлы, но я не могу найти ничего, что говорит о том, как он не заставляет git отслеживать недавно исключенные файлы.

много мест говорят, что git update-index может быть использован для решения таких проблем, как это, но я не могу заставить его работать для меня. Он имеет около миллиона возможных флагов, поэтому, возможно, я не наткнулся на правильный (или сочетание нескольких).

TL; DR: как я могу заставить Git соблюдать новые исключения в моем .файл гитюдного?

8
задан 75th Trombone
26.12.2022 20:00 Количество просмотров материала 2612
Распечатать страницу

2 ответа

Я думаю ответ объясняет это лучше всего. Отрицание работает только для повторного включения файлов, которые были явно проигнорированы другим правилом. Когда вы игнорируете вложенный каталог, Git даже не опускается в него и, следовательно, никогда не видит и явно не исключает ваш файл.

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

2
отвечен Jay Allen 2022-12-28 03:48

Гугл привел меня сюда в поисках ответа на подобную проблему. Все, что я хотел сделать, это отслеживать один файл конфигурации в другой неизмененной библиотеке.

для того, чтобы выполнить это, я должен был включить / исключить каждую папку до тех пор, пока файл, который я хотел исключить:

vendor/* !vendor/tfox/ vendor/tfox/* !vendor/tfox/mpdf-port-bundle/ vendor/tfox/mpdf-port-bundle/* !vendor/tfox/mpdf-port-bundle/TFox/ vendor/tfox/mpdf-port-bundle/TFox/* !vendor/tfox/mpdf-port-bundle/TFox/MpdfPortBundle/ vendor/tfox/mpdf-port-bundle/TFox/MpdfPortBundle/* !vendor/tfox/mpdf-port-bundle/TFox/MpdfPortBundle/mpdf/ vendor/tfox/mpdf-port-bundle/TFox/MpdfPortBundle/mpdf/* !vendor/tfox/mpdf-port-bundle/TFox/MpdfPortBundle/mpdf/config_fonts.php

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

1
отвечен BillyTom 2022-12-28 06:05

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх