не отслеженные файлы, не показанные в состоянии git

У меня есть проект со следующей структурой папок:

все файлы проекта находятся в папке base_fldr. Также у меня есть несколько папок внутри base_fldr под названием sub_fldr1 и sub_fldr2. Эти подпапки также содержат некоторые файлы.

Если я изменяю любой из файлов внутри моего base_fldr или base_fldrsub_fldr, то git status показывает их как измененные. Также, если я добавлю новый файл в base_fldr, статус git покажет его как неотслеженный файл.

моя проблема в том, если я добавлю новый файл внутри base_fldrsub_fldr тогда статус git не показывает файл как не отслеженный. Он даже не даст никакой информации о файле.

файл или его расширение не находится в my .список гитюдного. Также я попробовал git добавить sub_fldrfile_name, но ни он не дал ошибку, ни он не добавил файл в индекс.

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

6 ответов


Я понял, что происходит не так. В основном первая строка в моей .файл gitignore -"*/". Это приводит к тому, что любой файл, добавленный в подкаталог, игнорируется командой git status. Но самое смешное, что если я изменяю любые файлы в подпапке, git status правильно показывает их как измененные, поскольку файл уже находится в репозитории git, но игнорирует новые файлы в подпапке.

я исправил свою проблему, удалив строку .gitignore файл, чтобы не игнорировать изменения в подпапках, а затем добавил новые файлы для индексирования, а затем снова добавил обратно строку .gitignore, чтобы он игнорировал любые сгенерированные файлы в подпапках.

спасибо всем за ответы.


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

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

Это, вероятно, потому, что ваш каталог base_fldr\sub_fldr\ не отслеживается, если вы запустите:

git add base_fldr\sub_fldr\

из вашего рабочего корня копии он автоматически добавит каталог и другие файлы и каталоги в этом каталоге.

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


у вас есть .git поддиректорию внутри


вот еще одна причина поведения, описанного в этом вопросе (git status untracked files list не включает неотслеженный файл в подпапке). Если файл не отслеживается из-за a .файл gitignore в подпапке тогда файл не будет включен в список файлов состояния git untracked.


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

см.https://git-scm.com/docs/git-ls-files

  1. git ls-files --other --directory --exclude-standard

это покажет все неотслеженные файлы, в то время как повинуясь .

  1. git ls-files --other --directory

это покажет все неотслеживаемые файлы, не подчиняясь .

какие бы файлы ни присутствовали в выводе 2, но нет в выводе 1, не показаны в untracked из-за некоторого флага в вашем