Подобные проблемы часто возникают из-за попыток извлечь данные из репозитория с двумя именами файлов, которые отличаются только регистром. Если вы используете FAT, NTFS в режиме без учета регистра (по сути, в любое время, когда он используется под Windows), или HFS + в режиме без учета регистра и имеете два файла "foobar" и "FOOBAR", то Git увидит два разных файлы, но файловая система будет видеть только один, который вызовет все виды проблем. Git извлечет, скажем, «FOOBAR», а затем извлечет «foobar», который файловая система видит просто заменяющим содержимое «FOOBAR», но оставляющим его на месте. Теперь Git, похоже, что «FOOBAR» был заменен содержимым «foobar», а «foobar» пропал.
Существуют два различных проявления этой основной проблемы. Во-первых, когда ваш репозиторий содержит два файла, которые отличаются только регистром. В этом случае вам нужно работать с чувствительной к регистру файловой системой, или вам нужно будет отредактировать репозиторий, чтобы избежать коллизий такого рода; нечувствительная к регистру файловая система просто не может хранить содержимое этого хранилища.
Другой случай, который вы можете обойти, - это когда происходит переименование, которое изменяет регистр файла. Скажем, например, что репозиторий Git содержит переименование из «ПРИМЕРА» в «пример». Прежде чем Git проверит новую версию, он попытается проверить, не перезаписывает ли какой-либо существующий файл, который у вас есть на диске. Так как он думает, что «example» - это новое имя файла, он спросит файловую систему, существует ли она, и файловая система увидит «EXAMPLE» и скажет «да», поэтому Git откажется проверять новую версию, так как думает, что она будет перезаписана. неотслеживаемые файлы. В этом случае, если у вас нет локальных изменений, которые вам небезразличны, простого git reset --hard <revision-to-checkout>
, как правило, будет достаточно, чтобы вы смогли решить проблему и перейти к новой версии. Просто постарайтесь не переименовывать файлы в другие имена, которые отличаются только в том случае, если вы используете файловую систему без учета регистра, так как это вызовет такие проблемы.