Git WindowsLinuxmacOSGit

Git: Git не видит изменённый регистр имени файла в Windows

  • Обновлено
  • Чтение ≈ 3 минуты

Краткий ответ

На Windows переименование readme.md в README.md может не отражаться в истории Git, поскольку файловая система обычно не различает регистр имён, а core.ignorecase учитывает такую особенность. При этом на Linux два имени могут быть разными файлами, что важно для сборки.

В этой статье
  1. Как проявляется ошибка и когда применим способ
  2. Причины и признаки
  3. Пошаговая диагностика и решение
  4. Проверка результата и действия при повторении

#Как проявляется ошибка и когда применим способ

На Windows переименование readme.md в README.md может не отражаться в истории Git, поскольку файловая система обычно не различает регистр имён, а core.ignorecase учитывает такую особенность. При этом на Linux два имени могут быть разными файлами, что важно для сборки.

#Причины и признаки

Возможная причинаКак узнатьЧто делать
Файловая система не различает регистрОбычное переименование только заглавных букв не приводит к видимому изменению имени.git status остаётся чистым, хотя отображение имени в Проводнике изменилось.Сделать промежуточное переименование через git mv.
В репозитории уже есть конфликт имёнВ истории записаны два файла, различающиеся только регистром.Windows показывает один файл либо предупреждает при checkout.Разрешить конфликт имён в поддерживаемой среде.

#Пошаговая диагностика и решение

  1. 1. Убедитесь, что меняется только регистрОткройте Проводник Windows и найдите файл в корне проекта. Запишите точное исходное имя и желаемое новое имя. Не исправляйте автоматически регистр у многих файлов: это может нарушить импорты на Linux и ссылки на пути.
  1. 2. Проверьте настройку Git и состояние файловВ Git Bash или PowerShell из папки проекта выполните git status --short и git config --get core.ignorecase. На типичном томе Windows значение true ожидаемо, но его отсутствие или другое значение само по себе ещё не ошибка. Если есть другие локальные правки, сохраните их.
  2. Без изменений
    Linux · Терминал (Bash)Команда
    Без изменений. Проверяет отслеживаемые правки и параметр учёта регистра.
    git status --short
    git config --get core.ignorecase
  1. 3. Посмотрите точное имя, известное GitВыполните git ls-files | найдите строку нужного файла с помощью поиска терминала. В PowerShell можно использовать Select-String, в Git Bash — grep. Важно проверить именно имя в индексе, а не только то, что визуально показывает Проводник.
  2. Показывает имена файлов в индексе, не меняет файлы
    Linux · Терминал (Bash)Команда
    Показывает имена файлов в индексе, не меняет файлы.
    git ls-files
  1. 4. Переименуйте через временное уникальное имяЕсли нужен переход file.txt → FILE.txt, сперва выполните git mv file.txt __rename_temp__.txt, затем git mv __rename_temp__.txt FILE.txt. Временное имя должно быть действительно свободно. Git отследит изменение пути даже при нечувствительности файловой системы к регистру.
  2. Пример для проверенных имён; изменения в индексе и рабочей папке, только в тестовой ветке
    Linux · Терминал (Bash)С осторожностью
    Пример для проверенных имён; изменения в индексе и рабочей папке, только в тестовой ветке.
    git mv file.txt __rename_temp__.txt
    git mv __rename_temp__.txt FILE.txt

    Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

  1. 5. Проверьте изменения и ссылкиСделайте git diff --cached --name-status и убедитесь, что отражено переименование, а не случайное удаление другого файла. Найдите в проекте импорты, пути в конфигурации и ссылки, использующие прежний регистр. Для Linux точный регистр путей важен.
  2. Показывает подготовленное переименование, ничего не записывает
    Linux · Терминал (Bash)Команда
    Показывает подготовленное переименование, ничего не записывает.
    git diff --cached --name-status
  1. 6. Сохраните коммит и протестируйте переносЕсли переименование корректно, создайте коммит с ясным сообщением в своей тестовой ветке. Проверьте приложение на Windows и, если проект развёртывается на Linux, на соответствующей тестовой сборке. При ошибке верните имя через обратный git mv, не изменяя глобальный core.ignorecase.

#Проверка результата и действия при повторении

Успех: git diff --cached или история нового коммита показывает переименование на требуемый регистр, в Git и на Linux путь совпадает с импортами, а сборка проходит.

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

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.