Неиспользуемые файлы, не отображаемые в статусе git
У меня есть проект со следующей структурой папок:
Все файлы проекта находятся в папке base_fldr. Также у меня есть несколько папок внутри base_fldr, называемых sub_fldr1 и sub_fldr2. Эти вспомогательные папки также содержат некоторые файлы.
Если я изменяю любой из файлов внутри моего base_fldr или base_fldr\sub_fldr \, то статус git показывает их как измененные. Также, если я добавлю новый файл в base_fldr, статус git покажет его как файл без следа.
Моя проблема в том, что если я добавлю новый файл внутри base_fldr\sub_fldr \, то статус git не покажет файл как не проверенный. Он даже не даст никакой информации о файле.
Файл или его расширение НЕ входят в мой список .gitignore. Также я попробовал git добавить sub_fldr\имя_файла, но ни он не дал ошибку, ни добавил файл для индексации.
Любая идея, что происходит здесь? Спасибо!
Ответы
Ответ 1
Я понял, что происходит не так. В основном первая строка в моем файле .gitignore "*/". Это приводит к тому, что любой файл, добавленный в подкаталог, игнорируется командой git status. Но самое смешное в том, что если я изменяю файлы в подпапке, статус git корректно показывает их как измененные, так как файл уже находится в репозитории git, но игнорировал новые файлы в подпапке.
Я исправил свою проблему, удалив строку в файле .gitignore, чтобы не игнорировать изменения в подпапках, а затем добавил новые файлы в индекс, а затем снова добавил строку в .gitignore, чтобы она игнорировала любые сгенерированные файлы в подпапках.
Спасибо всем за ответы.
Ответ 2
У меня возникла аналогичная проблема с отсутствующими отслеживаемыми файлами. Экспериментируя с методами управления локально измененными версиями отслеживаемых файлов, не постоянно избегая случайных коммитов, я запускал следующее:
git update-index --assume-unchanged my-tracked-file-that-is-awol
В итоге я отказался от этой идеи, но забыл отменить команду, поэтому последующие изменения этого и других неизмененных файлов полностью отсутствовали:
git status -u --ignored
Мне потребовалось некоторое время, чтобы выяснить, что происходит, но мне просто пришлось отменить команду:
git update-index --no-assume-unchanged my-tracked-file-that-is-awol
Ответ 3
Вероятно, потому что ваш каталог base_fldr\sub_fldr\не проверен, если вы запустите:
git add base_fldr\sub_fldr\
Внутри вашего корня рабочей копии он автоматически добавит каталог и другие файлы и каталоги в этом каталоге.
По умолчанию git не будет отображать файлы в каталогах, которые не отслеживаются.
Ответ 4
У вас есть подкаталог .git
внутри вашего каталога sub_fldr
? Git может показаться, что вы пытаетесь использовать submodules.
Ответ 5
Вот еще одна причина поведения, описанного в этом вопросе (git status untracked files list не включает в себя неэкранный файл в подпапке). Если файл не отслеживается из-за файла .gitignore в подпапке, тогда этот файл не будет включен в список невосстановленных файлов состояния git.