Git игнорирует файлы, которые не находятся в gitignore - PullRequest
88 голосов
/ 24 февраля 2012

У меня есть git-репозиторий, который игнорирует файлы изображений, а также несколько других файлов, но мой файл .gitignore содержит только файл config.php.Есть ли какой-нибудь глобальный файл игнорирования, который я не могу найти?Я должен указать файлы, чтобы добавить их сейчас, и это дает мне это предупреждение:

Следующие пути игнорируются одним из ваших файлов .gitignore.

Содержимоеиз моего ~/.gitconfig файла - только мой адрес электронной почты.

Ответы [ 13 ]

150 голосов
/ 07 марта 2015

git check-ignore

Используйте команду git check-ignore для отладки вашего файла gitignore (исключите файлы).

Например:

$ git check-ignore -v config.php
.gitignore:2:src    config.php

Вышеприведенные выходные данные о шаблоне сопоставления (если есть) для каждого заданного имени пути (включая строку).

Так что, возможно, ваше расширение файла не игнорируется, а весь каталог.

Возвращенный формат:

<source> <COLON> <linenum> <COLON> <pattern> <HT> <pathname>

Или используйте следующую команду, чтобы напечатать ваш .gitignore в пользовательском HOME и папке хранилища:

cat ~/.gitignore "$(git rev-parse --show-toplevel)"/.gitignore "$(git rev-parse --show-toplevel)"/.git/info/exclude

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

Подробнее см. man gitignore, man git-check-ignore.

Синтаксис

git check-ignore [опции] pathname…

git check-ignore [опции] --stdin

48 голосов
/ 09 сентября 2013

Полезно знать, что ваша конфигурация git может содержать файл core.excludesfile, который представляет собой путь к файлу с дополнительными шаблонами, которые игнорируются. Вы можете узнать, есть ли у вас такая конфигурация, запустив (в проблемном git repo):

git config core.excludesfile

Если он печатает путь к файлу, посмотрите содержимое этого файла для получения дополнительной информации.

В моем случае я установил git через старую версию boxen , которая игнорировала шаблон 'Icon?' что в моем случае дало мне предупреждение, упомянутое в этом вопросе, для значков папок (я нахожусь в нечувствительной к регистру файловой системе, поэтому Icon? соответствует значкам).

30 голосов
/ 24 февраля 2012

Проверьте это:

  1. Вы искали другие файлы .gitignore, так как их может быть много.

  2. Также, посмотрите REPO / .git / config, чтобы увидеть, есть ли там что-нибудь.

  3. Репо исключать Локальные правила репо могут быть добавлены в файл .git / info / exclude в вашем репо. Эти правила не привязаны к репо, поэтому они не передаются другим. Этот метод можно использовать для локально сгенерированных файлов, которые, как вы ожидаете, не будут генерировать другие пользователи, например, файлы, созданные вашим редактором.

21 голосов
/ 11 марта 2013

У меня была такая же проблема - git игнорировал каталог с этой ошибкой:

➭ git add app/views/admin/tags/
The following paths are ignored by one of your .gitignore files:
app/views/admin/tags
Use -f if you really want to add them.
fatal: no files added

Я наконец-то понял, что моей проблемой была строка в моем ~/.gitignore_global:

TAGS

, который соответствует пути app/views/admin/tags. Я исправил это, добавив косую черту в глобальный файл gitignore

/TAGS

и git снова начал отслеживать мой каталог.

7 голосов
/ 20 ноября 2015

Для меня случайно в моем файле ~ / .gitignore_global был подстановочный знак.Может проверить там?

3 голосов
/ 23 сентября 2013

Еще одна попытка: у меня был каталог B с собственным репозиторием .git, вложенным в каталог моего проекта A (но не в виде подмодуля).Я сделал некоторые изменения в B, и хотел превратить его в истинный подмодуль.Я считаю, что git A автоматически игнорировал B, потому что он содержал свой собственный репозиторий (см. Вложенные репозитории git без подмодулей? ).Я переименовал папку B и снова попытался ее клонировать как подмодуль, и это привело меня к вводящему в заблуждение сообщению об ошибке «игнорируется .gitignore».Решение было удалить .git из B.

2 голосов
/ 20 января 2013

У меня была точно такая же проблема, как и у вас. Единственный ответ, который вы получили, перечислил несколько мест, чтобы проверить, но ни одно из них не решило проблему для меня, и из вашего комментария я тоже не думаю, что для вас. У меня не было ДРУГИХ файлов .gitignore, скрывающихся ниже в дереве каталогов; ничего в .git / config; ничего в .git / ingore / exclude

Если проблема не устранена, отметьте этот ответ . Это решило проблему для меня

По сути, проверьте наличие файла ~ / .gitignore. Моя была названа ~ / .gitignore_global. Я не знаю, когда он был создан ( I определенно не сделал его), но я попробовал множество различных настроек git при первой установке, поэтому один из них, должно быть, положил его туда.

Надеюсь, его ответ вам тоже поможет!

1 голос
/ 26 июля 2016

Еще одна вещь: если каталог, в котором вы находитесь, требует root-доступа для записи или выполнения, убедитесь, что вы являетесь пользователем root. Я действительно получил странную ошибку, когда пытался добавить подмодуль, а git продолжал жаловаться, что путь, в который я клонировал, игнорировался файлом git ignore. Затем я переключился на пользователя root, снова запустил подмодуль add, и проблем не было.

1 голос
/ 30 марта 2015

Убедитесь, что у вас есть права доступа к папке.Я только что натолкнулся на это, и это было потому, что папка принадлежала пользователю www-данных, а не пользователю, которому я вошел в терминал как.

1 голос
/ 23 декабря 2014

Другой причиной получения этого сообщения об ошибке от git является выполнение команды git submodule add, когда предыдущая команда git потерпела крах и покинула файл блокировки (это может случиться, например, при использовании пользовательских сценариев, которые включают команды git ивы не заметили сбой).

Если вместо этого вы выполните команду git commit, хотя ни одно из условий не изменилось (git submodule add будет продолжать кричать, что виноваты ваши файлы .gitignore),вместо этого вы увидите другой отчет об ошибке:

$ git commit -a
fatal: Unable to create '..../.git/index.lock': File exists.

If no other git process is currently running, this probably means a
git process crashed in this repository earlier. Make sure no other git
process is running and remove the file manually to continue.

и, действительно, удаление файла блокировки:

rm .git/index.lock

решит проблему.(Это происходит с git версии 2.1.0.9736. Это может быть исправлено в будущих выпусках git.)

...