неотслеживаемые файлы не отображаются в состоянии git - PullRequest
28 голосов
/ 06 января 2011

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

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

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

Моя проблема в том, что если я добавлю новый файл в base_fldr \ sub_fldr \, то состояние git не покажет файлнеотслеживаемые.Он даже не даст никакой информации о файле.

Файл или его расширение НЕ находятся в моем списке .gitignore.Также я попробовал git add sub_fldr \ file_name, но он не выдал ошибку и не добавил файл в индекс.

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

Ответы [ 6 ]

23 голосов
/ 06 января 2011

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

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

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

15 голосов
/ 07 ноября 2012

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

git update-index --assume-unchanged my-tracked-file-that-is-awol

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

git status -u --ignored

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

git update-index --no-assume-unchanged my-tracked-file-that-is-awol
14 голосов
/ 06 января 2011

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

git add base_fldr\sub_fldr\

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

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

8 голосов
/ 06 января 2011

У вас есть подкаталог .git в вашем каталоге sub_fldr? Git может подумать, что вы пытаетесь использовать подмодули .

5 голосов
/ 27 марта 2018

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

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

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

Это покажет все неотслеживаемые файлы, при этом соблюдая файл .gitignore.

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

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

Какие файлы присутствуют в выходных данных 2, но не присутствуют в выходных данных 1, не отображаются в неотслеживаемом виде из-за какого-либо флага в вашем .gitignore файле

2 голосов
/ 28 сентября 2011

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

...