Как заставить git игнорировать изменения в case?
Вопрос
Я не слишком уверен, что здесь происходит, но иногда конкретный файл в моем репозитории меняет регистр своего имени.например ,,:
до того, как: File.h
после: file.h
На самом деле мне все равно, почему это происходит, но это заставляет git думать, что это новый файл, и тогда я должен пойти и изменить имя файла обратно.Можете ли вы просто заставить git игнорировать изменения регистра?
[править] Я подозреваю, что Visual Studio делает что-то странное с этим конкретным файлом, потому что, похоже, это происходит чаще всего, когда я открываю и сохраняю его после внесения изменений.Однако у меня нет никакого способа исправить ошибки в VS, но я надеюсь, что git должен быть немного более способным.
Решение
Начиная с версии 1.5.6, существует ignorecase
опция доступна в [core]
раздел из .git/config
например ,Добавить ignorecase = true
Чтобы изменить его только для одного репозитория, из этой папки запустите:
git config core.ignorecase true
Чтобы изменить его глобально:
git config --global core.ignorecase true
Другие советы
В git версии 1.6.1.9 для Windows я обнаружил, что "ignorecase= true" в конфигурации уже установлено по умолчанию.
Вы можете заставить git переименовать файл только по регистру с помощью этой команды:
git mv --cached name.txt NAME.TXT
Обратите внимание, что это не меняет регистр файла в вашей извлеченной копии на разделе Windows, но git записывает изменение регистра, и вы можете зафиксировать это изменение.В будущих кассах будет использоваться новый корпус.
Ситуация, описанная в вопросе, теперь повторяется с Mac OS X, версия git>= 1.7.4 (я думаю).Лекарство состоит в том, чтобы установить ваш ignorecase= false и переименовать файлы в нижнем регистре (которые git изменил таким образом, а не Visual Studio) обратно в их обычный регистр вручную (т. Е.'mv myname Мое имя').
Подробная информация здесь.