Подтвердить что ты не робот

Изменить регистр файла в Windows?

В нашей git -контролируемой кодовой базе есть несколько файлов, которые я бы хотел переименовать. В частности, я просто хочу изменить регистр файла, так что sourceCode.java становится sourceCode.java, например. Улов: я нахожусь в окне Windows, и файловая система думает, что это одно и то же имя файла.

Как я могу заставить Windows и Git распознать это изменение и проверить его?

4b9b3361

Ответ 2

Если вы находитесь в файловой системе FAT, ваш единственный выбор - сделать двухэтапное переименование:

  • Переименуйте sourceCode.java в anything.you.like
  • Переименуйте anything.you.like в sourceCode.java

В те дни, когда мы использовали Perforce, у нас была именно эта проблема, и это было единственное решение, которое мы могли бы придумать.

Ответ 3

Следующие шаги позволили мне изменить случай в Windows:

  • Добавить ignorecase = false в [core] в .git/config;
  • Переместите файлы, которые вы собираетесь переименовать, из каталога проекта;
  • Добавить удаления в индекс;
  • Переместить все файлы в исходное местоположение и изменить регистр файлов и/или каталогов;
  • Добавить все "новые" файлы в индекс;
  • Удалите ignorecase = false, добавленный на первом шаге.

Таким образом, у вас есть одна фиксация, которая содержит переименование, и это позволяет легко изменить, например. весь каталог.

Ответ 4

Будьте осторожны. Это может привести к изменениям, которые невозможно слить. Git запутывается при слиянии с Windows, потому что он не может решить, является ли прежнее имя верхнего и нового нижнего регистра одним и тем же файлом или нет (для Git это не так, но для файловой системы они есть). Чтобы объединиться, вам нужно выполнить рутинное обходное решение, подобное удалению файлов перед слиянием.

См. Git проблема с перезагрузкой файлов с одинаковыми именами, но в другом случае

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