Git игнорирует файлы, которые не находятся в gitignore
У меня есть репозиторий git, который игнорирует файлы изображений, а также несколько других файлов, но в моем файле .gitignore
он игнорирует файл config.php
. Есть ли какой-то файл глобального игнорирования где-то, что я не могу найти? Я должен указать файлы, чтобы добавить их сейчас, и это дает мне это предупреждение:
Следующие пути игнорируются одним из ваших файлов .gitignore.
Содержимое моего файла ~/.gitconfig
- это только мой адрес электронной почты.
Ответы
Ответ 1
Проверьте это:
-
Вы искали другие .gitignore файлы, так как их может быть много.
-
Кроме того, посмотрите на REPO/.git/config, чтобы увидеть, есть ли что-нибудь.
-
Репо исключить Локальные правила для каждого репо могут быть добавлены в файл .git/info/exclude в вашем репо. Эти правила не передаются с репо, поэтому они не передаются другим. Этот метод может быть использован для локально генерируемых файлов, которые вы не ожидаете от других пользователей, таких как файлы, созданные вашим редактором.
Ответ 2
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 [options] pathname...
git check-ignore [опции] --stdin
Ответ 3
Хорошо бы знать, что ваша конфигурация git может содержать файл core.excludesfile, который является путем к файлу с дополнительными шаблонами, которые игнорируются. Вы можете узнать, есть ли у вас такая конфигурация, запустив (в проблемном git repo):
git config core.excludesfile
Если он печатает путь к файлу, посмотрите дополнительную информацию о содержимом этого файла.
В моем случае я установил git через старую версию boxen, которая проигнорировала шаблон "Значок?". что в моем случае дал мне предупреждение, упомянутое в этом вопросе, для значков в папке (я на файловой системе, не учитывающей регистр, что значки значков Icon).
Ответ 4
У меня была та же проблема: с этой ошибкой каталог 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 снова начали отслеживать мой каталог.
Ответ 5
Для меня у меня случайно был подстановочный знак в файле ~/.gitignore_global. Может быть, проверьте там?
Ответ 6
Другое дело: у меня был каталог B со своим собственным хранилищем .git
, вложенным в мой проектный каталог A (но не как подмодуль). Я внесла некоторые изменения в B и хотел сделать это в субмодуле bonafide. Я полагаю, что git A автоматически игнорировал B, поскольку содержал свой собственный репозиторий (см. Вложенные репозитории git без подмодулей?). Я переименовал папку B и попытался снова клонировать ее в качестве подмодуля, и это привело меня к ошибочному сообщению об ошибке "проигнорировано сообщением .gitignore". Решение заключалось в удалении .git
из B.
Ответ 7
У меня была такая же проблема, как у вас. Единственный ответ, который вы получили, перечисляет несколько мест для проверки, но ни один из них не решил проблему для меня, и из вашего комментария я тоже не думаю для вас. У меня не было файлов OTHER .gitignore, скрытых ниже в дереве каталогов; ничего в .git/config; ничего в .git/ingore/exclude
Если у вас все еще есть проблема, отметьте этот ответ. Он решил проблему для меня
В принципе, проверьте файл ~/ .gitignore. Шахта называлась ~/.gitignore_global. Я не знаю, когда он был создан ( I, конечно, не сделал этого), но я попробовал тонну другой установки git, когда я впервые установил, поэтому один из них, должно быть, есть.
Надеюсь, что его ответ поможет вам!
Ответ 8
Другой причиной получения этого сообщения об ошибке из 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.)
Ответ 9
Также проверьте ~/.gitignore
и ~/.gitignore_global
, которые могут быть созданы некоторыми Git клиентами (например, Atlassian SourceTree на Mac OS X).
Ответ 10
Убедитесь, что у вас есть разрешение на эту папку. Я просто столкнулся с этим, и это произошло потому, что папка принадлежала пользователю www-data, а не пользователю, в который я был подключен к терминалу.
Ответ 11
Убедитесь, что файл .gitignore
не игнорирует себя.
Общей ошибкой является добавление правила *
в файл .gitignore
для игнорирования каждого файла в текущей папке.
Решением этого является добавление исключения в .gitignore
:
*
!.gitignore
Таким образом, все файлы в каталоге будут игнорироваться, кроме .gitignore
.
Ответ 12
В моем случае это была прямая косая черта в моем пути, вызывающая проблему...
Не работает
/srv/bootstrap/
Работа
srv/bootstrap/
Ответ 13
Еще одна вещь: если каталог, в котором вы находитесь, требует доступа root для записи или выполнения, убедитесь, что вы находитесь у пользователя root. У меня действительно была странная ошибка, когда я пытался добавить подмодуль, и git продолжал жаловаться, что путь, к которому я клонировал, игнорировался файлом игнорирования git. Затем я перешел на пользователя root, снова запустил подмодуль, и проблем не возникло.