Я не слишком уверен, что здесь происходит, но иногда определенный файл в моем репозитории изменит его имя.. Например,
до: File.h
после: File.h
Мне все равно, почему это происходит, но это заставляет git думать, что это новый файл, а затем мне нужно пойти и изменить имя файла назад. Можете ли вы просто сделать изменения git игнорировать регистр?
[править]
Я подозреваю, что Visual Studio делает что-то странное с этим конкретным файлом, потому что это происходит чаще всего, когда я открываю и сохраняю его после изменений. У меня нет никакого способа исправить ошибки в VS, но git должен быть немного более способным, я надеюсь.
Ответ 1
Начиная с версии 1.5.6 имеется опция ignorecase
, доступная в разделе [core]
.git/config
например. добавить ignorecase = true
Чтобы изменить его только для одного репо, из этой папки выполните:
git config core.ignorecase true
Чтобы изменить его глобально:
git config --global core.ignorecase true
Ответ 2
В git версии 1.6.1.9 для Windows я обнаружил, что по умолчанию параметр "ignorecase = true" в config уже установлен.
Ответ 3
Вы можете заставить git переименовать файл в режиме только для случая с помощью этой команды:
git mv --cached name.txt NAME.TXT
Примечание. Это не изменяет случай файла в извлеченной копии в разделе Windows, но git записывает изменение обсадной колонны, и вы можете зафиксировать это изменение. Будущие проверки будут использовать новый корпус.
Ответ 4
Ситуация, описанная в вопросе, теперь повторяется с Mac OS X, git version >= 1.7.4 (я думаю). Исправление состоит в том, чтобы установить ignorecase = false и переименовать файлы с нижним регистром (которые git изменили этот путь, а не Visual Studio) обратно в их UsualCase вручную (т.е. "Mv myname MyName" ).
Подробнее здесь.