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

Неиспользуемые файлы, не отображаемые в статусе 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\имя_файла, но ни он не дал ошибку, ни добавил файл для индексации.

Любая идея, что происходит здесь? Спасибо!

4b9b3361

Ответ 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.