Проблемы такого рода часто возникают при попытке получить данные из репозитория с двумя именами файлов, которые отличаются только регистром. Если вы используете 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>обычно будет достаточно, чтобы решить проблему и перейти к новой версии. Просто постарайтесь не переименовывать файлы на другие имена, которые отличаются только в том случае, если вы используете файловую систему без учета регистра, так как это вызовет подобные проблемы.