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

141

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

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

  • 3
    Начиная с Git 2.0.1+ (июнь 2014 г.), должен работать простой git mv ( stackoverflow.com/a/24979063/6309 ). Даже на Windows.
  • 14
    Путь, закрывая этот вопрос как дубликат совершенно другого вопроса ...
Показать ещё 1 комментарий
Теги:
filenames

5 ответов

244
Лучший ответ

Посмотрите здесь, чтобы узнать больше о том, как это сделать:

Как сделать git игнорировать изменения в случае?

Или:

git mv -f name.java Name.java
  • 7
    Кроме того, это не работает на файловой системе FAT. Я несу код проекта на флеш-накопителе, и изменения в кейсе - настоящая боль.
  • 1
    Это не работает для меня в системе NTFS и Windows 10
Показать ещё 4 комментария
33

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

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

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

  • 11
    Просто примечание для других: нет необходимости совершать промежуточные действия, но необходимо добавить в индекс, чтобы git заметил изменения
16

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

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

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

  • 3
    Сделайте это для глобальных и локальных настроек: $ gti config --global core.ignorecase false $ gti config core.ignorecase false
4

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

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

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

0

С помощью NTFS (или FAT) одна команда "git mv" не решает проблему. Этот вопрос показывает технику, которая работает: git mv и только изменить регистр каталога

Ещё вопросы

Сообщество Overcoder
Наверх
Меню