Прежде всего, Git не обманывает вас .Файл действительно отслеживается в ветке, и действительно существует в рабочем дереве, и действительно не отслеживается.
Учитывая, что вы предлагаете в комментариях в другом месте, что файл не отображается в diffs или даже git status
Похоже, вы добавили его в свой gitignore (возможно, непреднамеренно через шаблон подстановки).Я знаю, что вы сказали, что этого не сделали, но если он не отображается на выходе git status
как неотслеживаемый файл, то он не отслеживается и игнорируется.Чтобы проверить это, вы можете перечислить все файлы, игнорируемые .gitignore:
git ls-files -i --exclude-from=.gitignore
Вы также можете перечислить все неотслеживаемые файлы, проигнорированные или нет:
git clean -xdn
(Вы, кажется, говорите, чтовы очень уверены, что файл отслеживается - если бы это действительно было так, git show HEAD:path/to/file
показывал бы зафиксированное содержимое файла. Однако я подозреваю, что вместо этого это скажет "fatal: Path 'path / to / file' несуществовать в 'HEAD' ".)
Еще один способ проверить, что файл не отслежен и игнорируется, - просто переименовать его, а затем посмотреть, сообщает ли git status
о том, что он удален;если это не так, то оно не отслеживалось.
Предполагая, что в этом списке указан файл, вы должны изучить файл в своем рабочем дереве.Вы можете увидеть, какую версию файла имеет другая ветвь, используя git show other-branch:path/to/file
, для сравнения.Если вы уверены, что вам не нужна версия в вашем рабочем дереве, просто удалите ее.Если вы обеспокоены тем, что вам это может понадобиться, переименуйте его или переместите из каталога.Если вы понимаете, что вам это нужно, вы должны выяснить, какой шаблон игнорирования игнорирует его, удалить его, добавить и зафиксировать.В любом случае, как только вы разберетесь с файлом, вы сможете переключать ветви.