Git не обнаруживает файл и не находится в .gitignore - PullRequest
56 голосов
/ 14 марта 2012

У меня есть файл с именем "style.css", и git не обнаруживает его. Он также не обнаружит, если я удалю его, но он обнаружит, если я изменю имя файла. Но мне нужно это с этим именем. Файл отсутствует в файле .gitignore. Это сводит меня с ума!

Буду признателен за помощь.

Ответы [ 14 ]

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

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

Например:

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

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

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

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

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

Или используйтеСледующая команда для печати .gitignore в папке пользователя и репо:

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

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

См .: man gitignore, man git-check-ignoreдля более подробной информации.

11 голосов
/ 14 марта 2012

Файл также может быть указан в .git/info/exclude, и есть опция core.excludesfile для просмотра.

8 голосов
/ 06 апреля 2016

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

Наряду с этим появилась папка .git, которая не позволяла git обнаружить папку.

Таким образом, моя структура папок была такой: git не обнаруживал папку 2, хотя репозиторий был установлен для исходного проекта 1:

--Original Project 1
    --.git
    --Folder 1
    --Folder 2
         --.git
         --Many other files/folders

Удаление дочерней папки .git решило мою проблему.

6 голосов
/ 14 марта 2012

Помимо gitignore и других мест, где можно проверить шаблоны игнорирования, проверьте, запускали ли вы git update-index --assume-unchanged или git update-index --skip-worktree.Если это так, отмените их.

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

Попробуйте выполнитьклон вашего репо и посмотрите, видите ли вы то же самое в клонированном.Если это так, попробуйте клонировать на другой компьютер / виртуальную машину и проверьте.Это даст вам некоторое представление о том, что идет не так, как надо.

5 голосов
/ 20 февраля 2017

У меня была такая же проблема (components/dashboard/js-dev/training/index.js не отслеживался по какой-то причине), поэтому я сделал следующее:

$ git check-ignore -v components/dashboard/js-dev/training/index.js
$ (gave me nothing)

$ git check-ignore -v components/dashboard/js-dev/training/
$ /Users/User/.config/git/ignore:23:    components/dashboard/js-dev/training/

В любом случае, я обнаружил, что это довольно странно, так что потом явзглянул на этот файл, /Users/User/.config/git/ignore, и вот как он выглядел:

(this is line 1)
# Automatically created by GitHub for Mac
# To make edits, delete these initial comments, or else your changes may be lost!

*.DS_Store
.AppleDouble
.LSOverride

# Icon must end with two \r
Icon

# Thumbnails
._*

# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent

# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

И получается, что строка 23 на самом деле та, что между .com.apple.timemachine.donotpresent и # Directories potentially created on remote AFP share, вдругими словами, это была абсолютно пустая строка!

Я попытался удалить все лишние переводы строк, чтобы мой файл выглядел так:

# Automatically created by GitHub for Mac
# To make edits, delete these initial comments, or else your changes may be lost!
*.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
.com.apple.timemachine.donotpresent
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk

Я запускаю git status, и я замечаю, что этосейчас набирает components/dashboard/js-dev/training/.Я запускаю git add components/dashboard/js-dev/training/, и все снова работает нормально.

Надеюсь, это кому-нибудь поможет - эта проблема застряла на слишком долгое время.

2 голосов
/ 30 июля 2014

У меня была похожая проблема, и я решил ее.

Я получаю это сообщение об ошибке при выполнении команды git add:

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

Поэтому я попытался заставить Git решить проблему, добавив -f к команде git add. Обычно это заставляет Git корректировать файл .gitignore, и вы сможете увидеть необходимые изменения или проблемные настройки.

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

-RemoteSystemsTempFiles
+RemoteSystemsTempFiles
\ No newline at end of file
1 голос
/ 06 августа 2014

Я также столкнулся с этой проблемой, и, похоже, это проблема с плагином EGit для Eclipse.Как сказал @ user1655478 в предыдущем комментарии, выбор проекта в представлении проектов, щелчок правой кнопкой мыши и выбор команды «Команда> Дополнительно> Без предположений без изменений» устранили проблему для меня.

1 голос
/ 28 июля 2014

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

Команда> Продвинутый> Предположим, без изменений

0 голосов
/ 22 марта 2019

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

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

'если' это проблема, проверьте 'показать расширения имени файла' в соответствующей папке, переименуйте файл как что-то другое с расширением строчных букв, добавьте git и подтвердите, а затем переименуйте его так, как это первоначально требовалось, но сохраните расширение строчных букв, потому что из более очевидного изменения оно будет переписано и не будет проигнорировано

0 голосов
/ 28 февраля 2019

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

git checkout am
git branch --set-upstream-to=origin/am
git pull

после тяги все изменения пошли вниз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...