Подтвердить что ты не робот

Устранение неполучения ранее проигнорированных файлов в Git repo

У меня есть сайт, в котором есть каталог /sites/default/files/, где обычно сохраняется содержимое пользователя. Полагая, что мне не нужно отслеживать этот материал, я добавил/sites/default/files/в мой файл .gitignore.

Затем я обнаружил, что я также хотел сохранить некоторые в основном постоянные загрузки в этом каталоге. Теперь имеет смысл отслеживать все в/sites/default/files/и исключать нежелательные подкаталоги, а не делать это наоборот.

Проблема заключается в том, что Git не перестанет игнорировать этот каталог. Я удалил строки из .gitignore, которые указывают этот каталог, и он не будет отслеживать его. У меня есть возможность использовать git add /sites/default/files/ -f, чтобы заставить Git отслеживать каталог, но я делал это раньше и кажется беспорядочным.

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

4b9b3361

Ответ 1

Для потомков: ответ на мою проблему был "просто смотри ближе".

@twalberg правильно указал, что может существовать правило, которое я игнорировал в файле .gitignore. Каскадный способ применения правил .gitignore упрощает исключение файлов более широко, чем предполагалось.

Насколько я могу судить, предположения, которые я делал о том, как работают git, были правильными. Аналогично, мой случай, похоже, не поддерживает (или опровергает) комментарии @J-16 SDiZ о том, какую роль может сыграть бит assume-unchanged.

Ответ 2

Вы знаете, как это сделать. Да, git add -f - это способ.

Если вы спросите, почему... это потому, что git установить бит assume-unchanged внутри. Этот бит make git считает, что файл не изменен, поэтому git add не добавит его.

Если вы хотите связываться с деталями реализации, вы можете использовать команду git update-index --no-assume-unchanged <file>.

Ответ 3

Я не думаю, что J-16 верен. Из http://www.kernel.org/pub/software/scm/git/docs/git-add.html:

Команда git add не добавляет игнорируемые файлы по умолчанию. Если какие-либо игнорируемые файлы были явно указаны в командной строке, git add будет терпеть неудачу со списком игнорируемых файлов. Игнорируемые файлы, полученные путем рекурсии каталогов или флеширования имени файла, выполняемые git (котировка ваших глобусов перед оболочкой), будут игнорироваться. Команда git add может использоваться для добавления игнорируемых файлов с параметром -f (force).

git add -f представляется только для добавления файла, в котором существует, в файле игнорирования.

Возможно, есть еще один файл .gitignore в /sites или/sites/default, который также сообщает git игнорировать этот каталог или, возможно, он установлен в .git/info/exclude?

Ответ 4

У нас была очень похожая проблема в каталоге Drupal. Проблема в том, что дистрибутив Drupal имеет файл .gitignore в каталоге drupal более высокого уровня, который соответствует любому в drupal/sites/files/*